原文はこちら。
The original article was written by David Delabassee (Director, Java Developer Relations, Oracle).
https://inside.java/2025/06/16/quality-heads-up/
OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDKビルドを使ってのFOSSプロジェクトのテストを推進しています。
Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。このプログラムの詳細と参加方法については、上記wikiをご覧ください。
The quality-discuss Archives
https://mail.openjdk.org/pipermail/quality-discuss/
java.io.File.delete No Longer Deletes Read-Only Files on Windows
WindowsにおけるFile::deleteの挙動が変わり、DOSの読み取り専用属性が設定されている通常のファイルの削除が失敗し、falseを返すようになります。JDK 25以前の場合、File::deleteは読み取り専用属性を削除してから、読み取り専用ファイルを削除しようとしていました。しかし、属性の削除やファイルの削除が単一のアトミックな操作ではないため、削除に失敗した場合にファイルが残ったまま属性のみが変更される可能性がありました。以前の動作に依存するアプリケーションは、ファイル削除前にファイル属性をクリアするようにアップデートする必要があります。
移行を容易にするため、以前の動作を復元するシステムプロパティが導入されました。
-Djdk.io.File.allowDeleteReadOnlyFiles=true
を指定して実行すると、File::deleteは削除を試行する前にDOS読み取り専用属性を削除するという、これまでの動作を復元します(従来の動作のまま)。
詳細は以下のBugをご覧ください。
[JDK-8355954] File.delete removes read-only files (win)
https://bugs.openjdk.org/browse/JDK-8355954
File Operations on Windows Fail When Pathnames End with a Trailing Space
ディレクトリ名またはファイル名に末尾にスペースを含むパスに対するファイル操作(例:”C:\SomeFolder\SomeFile “)は、Windows で一貫して失敗するようになりました。パスの要素の末尾にスペースを含む場合、例えばFile::mkdirはfalseを返すようになり、File::createNewFileはIOExceptionを投げるようになります。このようなパス名は Windowsでは有効ではないからです。JDK 25以前のバージョンでは、このような無効な抽象パス名から作成されたFileに対する操作は、実際には失敗しているにもかかわらず、成功したように見える場合がありました。
詳細は以下のBugをご覧ください。
[JDK-8354450] A File should be invalid if an element of its name sequence ends with a space
https://bugs.openjdk.org/browse/JDK-8354450