java.io.File vs java.nio.Files 在新代码中哪个是首选?

2022-09-01 05:18:33

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

现在我已经在Java中开发了好几年了,以前没有听说过这个论点。自从阅读他的帖子以来,我一直在搜索,并且没有找到许多其他来源来证实这一点,就个人而言,我觉得文章中争论的许多观点都很弱,如果你知道如何阅读它们,File类抛出的错误通常会告诉你问题到底是什么。

随着我不断开发新代码,我的问题是这样的:

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


答案 1

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

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


答案 2

File具有较新的实现:。与建筑商.并且具有许多不错的实用程序函数,并且还具有更好的实现(而不是有时失败)。PathPaths.get("...")FilesmoveFile.renameTo

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

File.toPath()可能有助于渐进式过渡。

仅公用事业公司就可以向较新的类别迈进,从而实现盈利。Files