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

时间:2015-08-21 15:00:35

标签: java file

在围绕SO撰写答案时,用户试图指出java.io.File不应该在新代码中使用,而是他认为 new 对象java.nio.Files应该是用来代替;他链接到this article

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

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

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

3 个答案:

答案 0 :(得分:13)

您链接的documentation会给出答案:

  

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

答案 1 :(得分:10)

chrome://inspect 有一个较新的实现:File。使用构建器Path。而且Paths.get("...")有很多很好的实用函数,也有更好的实现(Files而不是有时失败的move)。

File.renameTo维护其文件系统。因此,你可以复制一个zip文件系统(" jar:file:.....。zip")到另一个文件系统的一些路径,反之亦然。

Path可能有助于增量转换。

File.toPath()中的实用程序就可以转移到更有利可图的新类。

答案 2 :(得分:2)

我会说,"首选"。相反,我建议您查看应用程序所需的功能,并使用java.io.Filejava.nio.Files中哪些更符合要求。

答案可能是平局,或java.nio.Files更好。但这取决于你或你的团队,而不是其他一些程序员。

  

这是Java社区中的一个活跃参数吗?

有些人会争论任何事情。但我会说社区(一般而言)有更重要的问题。