质量宣传提醒 - JDK 25:Windows上某些文件操作行为的变化
💡
原文英文,约300词,阅读约需2分钟。
📝
内容提要
OpenJDK质量小组正在推动使用OpenJDK构建测试FOSS项目,以提升发布质量。Windows上的File.delete方法已更改,不再删除只读文件,且路径名以空格结尾时文件操作将失败。建议更新依赖于旧行为的应用程序。
🎯
关键要点
- OpenJDK质量小组正在推动使用OpenJDK构建测试FOSS项目,以提升发布质量。
- Windows上的File.delete方法已更改,不再删除只读文件,返回false。
- 建议更新依赖于旧行为的应用程序,以在删除文件前清除文件属性。
- 引入了系统属性以恢复旧行为,使用-Djdk.io.File.allowDeleteReadOnlyFiles=true可以恢复删除只读文件的功能。
- Windows上路径名以空格结尾的文件操作将失败,相关操作如File::mkdir和File::createNewFile会返回false或抛出IOException。
- 之前的JDK版本中,操作这些非法路径的文件可能会看似成功,但实际上并未成功。
❓
延伸问答
JDK 25对Windows上的File.delete方法做了什么改变?
JDK 25中,File.delete方法不再删除只读文件,返回false。
如何恢复JDK 25中File.delete的旧行为?
可以通过设置系统属性-Djdk.io.File.allowDeleteReadOnlyFiles=true来恢复旧行为。
在Windows上,路径名以空格结尾会导致什么问题?
路径名以空格结尾的文件操作将失败,相关操作会返回false或抛出IOException。
为什么建议更新依赖于旧File.delete行为的应用程序?
因为旧行为可能导致文件删除失败,建议在删除前清除文件属性以确保成功。
OpenJDK质量小组的目标是什么?
OpenJDK质量小组旨在通过使用OpenJDK构建测试FOSS项目来提升发布质量。
JDK 25之前File.delete方法的行为是什么?
在JDK 25之前,File.delete会先移除只读属性,然后删除文件,可能导致文件保留但属性被修改。
➡️