On Wed, 24 May 2023 15:25:37 GMT, Roger Riggs <[email protected]> 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