java如何复制文件
使用 Files.copy() 方法(NIO)
Java NIO(New I/O)提供了 Files.copy() 方法,适合现代Java版本(JDK 7+)。该方法支持更高效的复制操作,并可自定义复制选项(如覆盖文件)。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class FileCopyNIO {
public static void main(String[] args) {
Path source = Paths.get("source.txt");
Path target = Paths.get("target.txt");
try {
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用 FileInputStream 和 FileOutputStream
传统IO流方式适用于所有Java版本,通过逐字节或缓冲区读取写入实现文件复制。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopyIO {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("source.txt");
FileOutputStream fos = new FileOutputStream("target.txt")) {
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Apache Commons IO 库
第三方库 commons-io 提供了 FileUtils.copyFile() 方法,简化代码并增强功能(如保留文件属性)。
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileCopyCommons {
public static void main(String[] args) {
File source = new File("source.txt");
File target = new File("target.txt");
try {
FileUtils.copyFile(source, target);
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 路径处理:使用绝对路径或确保相对路径正确。
- 异常处理:捕获
IOException并处理文件不存在或权限问题。 - 大文件优化:缓冲区大小(如 8KB 或更大)可提升性能。
- 资源释放:使用 try-with-resources 自动关闭流。






