RFR: 8290499: new File(parent, \"/\") breaks normalization – creates File with slash at the end
Brian Burkhalter
bpb at openjdk.org
Wed May 24 15:49:01 UTC 2023
On Wed, 24 May 2023 15:25:37 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> In `java.io.File`, change the constructors `File(File,String)` and `File(String,String)` so that they do not for typical cases return a `File` whose path has a trailing name separator.
>
> src/java.base/unix/classes/java/io/UnixFileSystem.java line 109:
>
>> 107: if (len > 1 && s.charAt(len - 1) == '/')
>> 108: return s.substring(0, len - 1);
>> 109: return s;
>
> If there are multiple trailing `/`, is it sufficient to remove only a single `/`?
> Does this have the same result as `normalize(pathname)`?
The main calling context is
if (parent.path.isEmpty()) {
this.path = FS.resolve(FS.getDefaultParent(),
FS.normalize(child));
} else {
this.path = FS.resolve(parent.path,
FS.normalize(child));
}
where `parent` is non-`null` and already normalized. Thus both components should already be normalized and multiple trailing `/` impossible. I _think_ that it should give the same result as `normalize(pathname)`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14109#discussion_r1204421403
More information about the core-libs-dev
mailing list