自从Java 7以来,就有了java.nio.file
包。那么为什么在Java 8中java.io.File
仍然没有被弃用呢?
自从Java 7以来,就有了java.nio.file
包。那么为什么在Java 8中java.io.File
仍然没有被弃用呢?
.canWrite()
会返回true,但实际上用户没有必要的权限。这是在AD环境中发生的。 - fge因为它太深入了JDK。
自Java早期以来,文件就一直存在;尽管它有无数缺陷(其中一些列在此处,但还有其他问题),将所有代码迁移到“新”的JSR 203 API(已经4年了!)所需的工作量是巨大的。
实际上,主要问题在于JSR 203的知晓度或缺乏知晓度;即使在今天,绝大多数网上教程仍在使用File;最好的办法就是编写更多使用JSR 203的教程、代码等等。
事实上,我是这个新API的主要倡导者之一,甚至在这个方面有点烦人:),但我有代码证明我的观点:
Files
, (并在此过程中修复了一些错误)。现在,这只是一个耐心的问题;使用新方法回答SO上的问题,甚至是旧问题等等。这是一场艰苦的战斗。
File
的API仍将在弃用时工作,只会编译警告。 - RadiodefPath
可以是一个不在默认文件系统上的实体,例如你的硬盘;这使得 JDK 的一些核心类,例如 FileOutputStream
,无法使用 JSR 203 进行再现(这就是为什么有 Files.newOutputStream()
的原因)。 - fge
Path
/Files
是File
的替代品,因此它们非常相关。关于弃用有一些讨论,但不太涉及“为什么”。这个问题就像那个问题的后续。 - Radiodef