java - 将来使用 NIO 和 NIO2 处理文件和文件系统 : Before NIO,

标签 java file file-io filesystems

在 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/

相关文章:

python - 重命名包含空格的文件名

c - C 中的身份验证(从给定文件读取和检查)

python - Unicode解码错误: 'ascii' codec can't decode byte 0xc3 in position 40: ordinal not in range(128)

java - Java中如何删除JSON多余的行?

java - 从已知类型实例化类

file - 如何在 Go 中将十六进制字节写入文本文件?

design-patterns - 保存和写入不同文件格式的模式

Android:如何使用 ndk 从 C++ 代码中读取游戏 Assets 文件

java - 从 Angular.js 中的 JSON 读取电话号码时出现错误

java - 如何重构这段代码?