RFR: 8024695: new File("").exists() returns false whereas it is the current working directory

Brian Burkhalter bpb at openjdk.org
Thu Dec 19 20:20:39 UTC 2024


On Thu, 19 Dec 2024 00:36:44 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

> Update the specification of `java.io.File.exists()` to match its behavior, which seems correct in the context of how the empty abstract pathname is documented elsewhere in the class.

The `Files.exists(Path.of(""))` case returns `true` because `UnixPath.getByteArrayForSysCalls` has a special case that converts `""` to `"."`:

                // empty path case will access current directory
                byte[] here = { '.' };
                return here;

See [UnixPath.java, line 142](https://github.com/openjdk/jdk/blob/4d77dbad4e15c5392878e7bc91cd8eb7ce49a482/src/java.base/unix/classes/sun/nio/fs/UnixPath.java#L142).

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

PR Comment: https://git.openjdk.org/jdk/pull/22821#issuecomment-2555699425


More information about the core-libs-dev mailing list