java.io.File vs java.nio.Files这是新代码中的首选?

Mat*_*ark 24 java io nio file java-io

在围绕SO编写答案时,用户试图指出不java.io.File应该在新代码中使用,而是他认为应该使用对象java.nio.Files; 他链接到这篇文章.

现在我已经用Java开发了好几年了,之前没有听过这个论点; 自从阅读他一直在寻找的帖子,并没有找到许多证实这一点的其他消息来源,而且就个人而言,我觉得文章中提出的许多观点都很薄弱,如果你知道如何阅读它们,那么文件类通常会告诉您具体问题.

当我不断开发新代码时,我的问题是:

这是Java社区中的一个活跃的参数吗?是文件优于文件对新代码?两者之间的主要优点/缺点是什么?

Jen*_*ens 16

您链接的文档给出了答案:

java.nio.file包定义Java虚拟机的接口和类,以访问文件,文件属性和文件系统.此API可用于克服java.io.File类的许多限制.toPath方法可用于获取Path,该Path使用File对象表示的抽象路径来定位文件.生成的Path可以与Files类一起使用,以提供对其他文件操作,文件属性和I/O异常的更有效和广泛的访问,以帮助在文件操作失败时诊断错误.


Joo*_*gen 12

File有一个更新的实现:Path.与建设者Paths.get("...").并且Files具有许多优秀的实用功能,并且具有更好的实现(move而不是有时失败File.renameTo).

A Path维护其文件系统.因此,您可以将zip文件系统("jar:file:..... .zip")复制到另一个文件系统的某个路径,反之亦然.

File.toPath() 可能有助于增量转型.

只有公用事业公司才能Files转向更新的有利可图的类.


Ste*_*n C 10

我会说两者都不是“首选”。相反,我建议你看看你的应用程序需要的功能和使用其中的java.io.Filejava.nio.Files符合要求更好。

答案很可能是平局,或者java.nio.Files更好。但这取决于您或您的团队来决定,而不是 SO 上的其他程序员。


这是 Java 社区中的积极争论吗?

有些人会为任何事情争论。但我想说的是,社区(总的来说)有更重要的问题。