RFR: 8191963: Path.equals() and File.equals() return true for two different files on Windows [v3]

Roger Riggs rriggs at openjdk.org
Mon Oct 20 15:44:07 UTC 2025


On Tue, 14 Oct 2025 20:55:33 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

>> Replace logic in `java.io.WinNTFileSystems.compare(File,File)` with that from `sun.nio.fs.WindowsPath.compareTo(Path)`.
>
> Brian Burkhalter has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
> 
>  - 8191963: Make legacy behavior be the default
>  - Merge
>  - 8191963: Add system property to enable legacy behavior
>  - Merge
>  - 8191963: Path.equals() and File.equals() return true for two different files on Windows

An APINote (and release note) would useful in Files.equals and Files.compare() to say that Path.equals and Path.compareTo on Windows are consistent with Windows file system name comparisons. (Or words to that effect).
Suggesting developers are encouraged to use Path instead of File.

src/java.base/windows/classes/java/io/WinNTFileSystem.java line 660:

> 658:                 }
> 659:             }
> 660:             return n1 - n2;

Can WindowsPath have a public common method to compare the string versions? (To avoid code duplication).

-------------

PR Review: https://git.openjdk.org/jdk/pull/25788#pullrequestreview-3356942742
PR Review Comment: https://git.openjdk.org/jdk/pull/25788#discussion_r2445371068


More information about the core-libs-dev mailing list