什么是更好的选择(在性能方面):使用fileinputstream和fileoutputstream复制文件或从Java运行特定于操作系统的命令复制命令?
答案 0 :(得分:2)
我非常确定使用特定于操作系统的复制命令会比简单的自编写解决方案更快或更快。操作系统特定的命令可能使用合理的缓冲区大小和其他优化,否则你必须自己弄清楚。
修改强>
x-x是对的,你不应该直接调用copy命令。我认为Java已经有了一个复制方法,比如File.copy()或其他东西,但我找不到任何东西,甚至在JDIC中也找不到。所以Apache Commons IO可能就是这样。
答案 1 :(得分:2)
使用优秀的commons-io库,它有一个method就可以完成。它使用非常广泛,并且确保它非常优化。
从here下载,或使用POM dependency将maven复制到您的pom.xml文件中。
请勿使用特定于操作系统的副本进行复制,否则将无法移植。使用java中的非java代码,无论是使用JNI还是生成外部命令都是令人头痛和维护的噩梦。
答案 2 :(得分:2)
用Java做。
运行OS命令的一个问题是您必须在OS内核级别创建一个完整的进程,这是一个重量级的操作。对于较小的文件,存在大量的固定开销。
另一个问题是它没有充分的理由增加了系统依赖性。
答案 3 :(得分:1)
取决于您在发生错误时将采取的措施。通常,本机命令能够更好地处理错误情况,但您可能很难与用户进行交互。
纯java解决方案(除了跨平台)允许您完全控制 - 我建议使用库来处理凌乱的细节和错误情况。