繁体   English   中英

java-有效的文件复制

[英]java - effective files copying

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

如果要在本地复制文件,则应使用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之类的文件。 为此,请参阅问题。

“最佳”需要澄清。

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

从Google的番石榴库中检出Files类。 它包含一些用于复制整个文件的实用程序方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM