在 Java 1.4 之前,通过在不同的输入流/输出流之间移动字节来处理文件是常见的做法。
自 Java 1.4 起,其中 NIO已添加,建议使用 Channels 执行相同操作。
与 NIO2在 Java 7 中,java.nio.file 中还会有另一个 API,它支持执行以下操作:
val source = Paths.get("fooDir/fooFile.txt")
val target = Paths.get("barDir/barFile.txt")
source moveTo target
source createLinkTo target
是 older ones more or less useless现在进行文件系统操作,除非您想手动触摸字节?
最佳答案
对于大多数操作,NIO2 会让您做得更多/更好。
使用旧版 API 无法完成某些操作(某些属性、ACL、文件更改通知、更好的错误处理...)。
最重要的是:这并不一定更困难。
回答您的问题:当您可以使用两个不同的 API 执行某些操作时,我没有看到任何旧 API 可以做得更好的用例。
有一些讨论:
Java NIO FileChannel versus FileOutputstream performance / usefulness http://mailinator.blogspot.com/2008/02/kill-myth-please-nio-is-not-faster-than.html
但我想说最新的 API设计是为了更快。如果在某些情况下不这样做,并且您一直在使用较新的 API,则期望 jvm 更新可以恢复这种情况,而无需更改任何代码。
关于java - 将来使用 NIO 和 NIO2 处理文件和文件系统 : Before NIO,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5231444/