java如何复制文件
使用 Files.copy() 方法(NIO)
Java NIO 提供了 Files.copy() 方法,适用于 Java 7 及以上版本。该方法支持更高效的复制操作,尤其适合大文件。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
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);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileInputStream 和 FileOutputStream(传统 IO)
传统 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();
}
}
}
使用 Files.copy() 覆盖目标文件
若目标文件已存在,需通过 StandardCopyOption.REPLACE_EXISTING 强制覆盖。
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.io.IOException;
public class FileCopyOverride {
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 (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();
}
}
}
选择方法的依据
- 性能要求高或大文件:优先使用 NIO 的
Files.copy()。 - 兼容旧版本 Java:选择传统 IO 方式。
- 需要简洁代码:考虑 Apache Commons IO 库。
- 覆盖目标文件:添加
StandardCopyOption.REPLACE_EXISTING参数。






