java - 有效的文件复制

时间:2009-11-10 08:56:29

标签: java file io file-copying

我想知道哪种方法可以复制大量文件。

4 个答案:

答案 0 :(得分:4)

如果要在本地复制文件,则应使用FileChannel.transferFrom()或FileChannel.transferTo()。例如:

FileInputStream is = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(oFile);
FileChannel f = is.getChannel();
FileChannel f2 = fos.getChannel();

f.transferTo(0, f.size(), f2);

f2.close();
f.close();

在许多平台上,复制将通过DMA进行,并且尽可能快。

如果您通过网络复制文件,那么您处于不同的情况。如果某些文件可能已经存在,那么您应该查看rsync,因为它可以避免传输两侧相同的文件部分。如果最常见的情况是目标计算机上不存在文件,那么您将需要使用类似scp的东西。为此,请参阅this问题。

答案 1 :(得分:2)

“最佳”需要澄清。

我会委托rsync,它非常擅长复制大量具有大量选项的文件。我不知道rsync的Java实现很好。

答案 2 :(得分:2)

查看Google Files库中的guava课程。它包含一些复制整个文件的实用方法。

答案 3 :(得分:2)