[英]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实现。
与往常一样,这里有Jakarta Commons: http : //commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.