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