Java实现文件复制

需积分: 11 1 下载量 192 浏览量 更新于2024-09-09 收藏 794B TXT 举报
"Java语言提供了多种方式来实现文件的复制操作,其中最常见的一种方法是通过`FileInputStream`和`FileOutputStream`类进行读写操作。以下是一个简单的Java程序示例,用于将一个文件从一个位置复制到另一个位置。这个程序涉及到的核心知识点包括文件输入输出流、异常处理和缓冲区的使用。" 在Java中,复制文件通常涉及以下步骤: 1. **创建文件输入流对象**: 使用`FileInputStream`类创建一个指向源文件的输入流对象。在示例中,`srcFile`是通过`new FileInputStream(src)`创建的,`src`是源文件的路径。 2. **创建文件输出流对象**: 创建一个`FileOutputStream`对象,它代表目标文件的位置。`descFile`通过`new FileOutputStream(desc)`初始化,`desc`是目标文件的路径。 3. **定义缓冲区**: 使用字节数组作为数据传输的缓冲区,例如`byte[] ary = new byte[1024];`。这里设置缓冲区大小为1024字节,可以根据实际需求调整。 4. **读取源文件**: 使用`read()`方法从`FileInputStream`读取数据到缓冲区。`byteRead = srcFile.read(ary);`会返回读取到的字节数,如果达到文件末尾,返回-1。 5. **写入目标文件**: 将缓冲区中的数据写入目标文件。`descFile.write(ary);`将缓冲区内容写入,`flush()`方法确保数据立即写入磁盘,而不是留在缓冲区。 6. **循环读写直到文件结束**: 使用`do...while`循环,当`read()`方法返回-1时,表示文件读取完毕,退出循环。 7. **关闭流**: 文件操作完成后,务必关闭打开的流。`srcFile.close()`和`descFile.close()`分别关闭源文件和目标文件的输入输出流。 8. **异常处理**: 示例中的代码包含一个`try...catch`块来捕获可能出现的`IOException`。当用户没有提供足够的命令行参数时,会抛出`ArrayIndexOutOfBoundsException`,程序会打印错误消息并返回。 注意,这种方法适用于小文件的复制,因为所有数据都存储在内存中。对于大文件,可以考虑使用`BufferedInputStream`和`BufferedOutputStream`以减少内存消耗,并通过`read()`方法的重载版本一次读取多个字节。此外,`java.nio`包提供的`Files.copy()`方法是更现代且简洁的文件复制方式,支持大文件和异步复制,值得在实际开发中考虑使用。