1

我想知道复制大量文件的最佳方法。

4

4 回答 4

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 之类的东西。为此,请参阅问题。

于 2009-11-10T10:58:04.317 回答
2

查看FilesGoogle 的番石榴库中的课程。它包含一些用于复制整个文件的实用方法。

于 2009-11-10T09:24:42.647 回答
2

与往常一样,有 Jakarta Commons:http ://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html

于 2009-11-10T09:27:55.453 回答
2

“最佳”需要澄清。

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

于 2009-11-10T08:58:30.350 回答