在Java中复制文件的唯一方法是打开流、声明缓冲区、读入一个文件、循环遍历该文件,然后将其写出到另一个流,这一直困扰着我.网络上到处都是类似的,但仍然略有不同的这类解决方案的实现.
有没有更好的方法保持在Java语言的范围内(意思是不涉及执行特定于操作系统的命令)?也许在某个可靠的开源实用程序包中,这至少会掩盖这个底层实现,并提供一个单线解决方案?
在Java中复制文件的唯一方法是打开流、声明缓冲区、读入一个文件、循环遍历该文件,然后将其写出到另一个流,这一直困扰着我.网络上到处都是类似的,但仍然略有不同的这类解决方案的实现.
有没有更好的方法保持在Java语言的范围内(意思是不涉及执行特定于操作系统的命令)?也许在某个可靠的开源实用程序包中,这至少会掩盖这个底层实现,并提供一个单线解决方案?
正如工具包上面提到的,Apache Commons IO是最好的 Select ,特别是FileUtils.copyFile();它为您处理所有繁重的任务.
作为后记,请注意FileUtils的最新版本(如2.0.1版本)添加了NIO用于复制文件;NIO can significantly increase file-copying performance,这在很大程度上是因为NIO routine 延迟直接复制到OS/文件系统,而不是通过Java层读写字节来处理它.因此,如果您正在寻找性能,那么可能需要判断您是否使用了最新版本的FileUtils.