java - 为什么不推荐使用 java.io.File?

标签 java file io deprecated

从 Java 7 开始就有 java.nio.file 包。那么,为什么 java.io.File 仍未在 Java 8 中弃用?

最佳答案

它没有被弃用,因为它没有被破坏。或者更准确地说,因为 Java 团队和/或 Oracle 管理层认为它的破坏程度不足以保证 File 的弃用会导致 1 的破坏和阻力级别。

Oracle(以及之前的 Sun)保留弃用被认为使用起来有害/危险,并且在不破坏二进制(或语义)兼容性的情况下无法修复的 API。

java.io.File API 只是老式和笨拙2,但没有直接危害。还有其他依赖于 File 的标准 API,更不用说许多第 3 方 API 和(可能)数以百万计的客户代码行。没有必要向世界发出所有这些代码都需要彻底修改的信号。


1 - 显然,有些人会不同意这一点。

2 - @fge 指出,某些 File 方法在某些平台(尤其是 Windows/AD)的某些 Java 版本中无法正常运行。然而,那些是/是实现错误,而不是基本的 API 缺陷。在 UNIX/Linux 平台上,方法语义或多或少是正确的2

3 - 一些“不太正确”的方面是 File.length() 为“/proc”树中的文件返回零,并且当您访问时会发生奇怪的事情一个安装在 Linux 上的 FAT 文件系统,并尝试从 Java 访问。

关于java - 为什么不推荐使用 java.io.File?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547589/

相关文章:

Java Matcher数字方法

jquery - 使用 jQuery 单击父 div 时打开文件对话框

java - 如何读取大文件并在最后释放内存?

c - 打印文件中的子字符串

java - 套接字读取数据花费的时间太长(BufferedReader)

java - 将 ExtJS 与 JAX-RS 集成

java - 从 Controller 类编辑在 fxml 中创建的 UI 元素 - JavaFX

C# 文件正在被另一个进程使用

java - 将结果集转换为列表

linux - 删除子目录中除最新10个之外的所有文件