一、使用FileStreams复制
这是最经典的方式将一个文件的内容复制到另一个文件中。 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。
private static void copyFileUsingFileStreams(File source, File dest)
throws IOException {
try (
InputStream input = new FileInputStream(source);
OutputStream output = new FileOutputStream(dest)
) {
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) != -1) {
output.write(buf, 0, bytesRead);
}
}
}
二、使用FileChannel复制
Java NIO包括transferFrom方法。
private static void copyFileUsingFileChannels(File source, File dest) throws IOException {
try (
FileChannel inputChannel = new FileInputStream(source).getChannel();
FileChannel outputChannel = new FileOutputStream(dest).getChannel()
) {
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
}
}
三、使用Java7的Files类复制
如果你有一些经验在Java 7中你可能会知道,可以使用复制方法的Files类文件,从一个文件复制到另一个文件。
private static void copyFileUsingJava7Files(File source, File dest)
throws IOException {
Files.copy(source.toPath(), dest.toPath());
}
四、使用其他工具类复制
Apache Commons IO提供拷贝文件方法在其FileUtils类。
private static void copyFileUsingApacheCommonsIO(File source, File dest)
throws IOException {
org.apache.commons.io.FileUtils.copyFile(source, dest);
}
国产的hutool.io中有文件工具类FileUtil。
private static void copyFileUsingApacheCommonsIO(File source, File dest)
throws IOException {
FileUtil.copy(source, dest, true);
}
评论区