On Wed, 24 May 2023 15:25:37 GMT, Roger Riggs <rri...@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

Reply via email to