"It looks really odd that Java may create a directory but may not change to it. It also introduces compatibility problems with files created on other platforms, downloads, unpacked archives, etc. "
Semyon, could you clarify this. I mean, how can Java create a directory ending with space, when Windows does not allow it. As mentioned in the bug JDK-6578565, Win32 API CreateDirectoryW silently trims the trailing white spaces from a directory name, whereas the alternative API SHCreateDirectoryEXW produces an error if the path is illegal. Thanks, Krishna From: Semyon Sadetsky Sent: Friday, February 16, 2018 11:10 PM To: Phil Race <philip.r...@oracle.com>; Krishna Addepalli <krishna.addepa...@oracle.com>; swing-dev@openjdk.java.net Subject: Re: <Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space I take a look at the 6578565. They said that windows specifies this in https://msdn.microsoft.com/en-US/library/aa365247.aspx. And this doc says: "Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not. However, it is acceptable to specify a period as the first character of a name. For example, ".temp"." That means that only Windows shell doesn't support it. This may be not enough a justification since NIO works in headless mode as well. It is the client-libs that should take care about following the shell specs not core-libs. NIO should support spaces if underling OS supports it. It looks really odd that Java may create a directory but may not change to it. It also introduces compatibility problems with files created on other platforms, downloads, unpacked archives, etc. --Semyon Do not end a file or directory name Krishna Addepalli HYPERLINK "mailto:krishna.addepa...@oracle.com"<krishna.addepa...@oracle.com> with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not. However, it is acceptable to specify a period as the first character of a name. For example, ".temp". On 02/16/2018 09:08 AM, Phil Race wrote: Right, what I said was that perhaps nio is behaving as specified in this case. If a standalone nio program can be written that shows nio contravening its spec. then a bug should be raised against nio. I did not verify what the case is there .. I just suggested that should be investigated. Vagueness that it is an nio problem without pointing to why just makes me have to investigate it myself to see why .. I'd prefer that the bug owner do that :-) But otherwise (no nio bug) we'll have to deal with what nio specifies. If we can fix it locally *and* file a bug against nio then that is also an issue. Also nio may take a while to get to it .. -phil On 02/16/2018 08:56 AM, Krishna Addepalli wrote: Hi Semyon, I had a discussion with Sergey,Phil regarding this. While there was a similar bug filed against Core-libs (https://bugs.openjdk.java.net/browse/JDK-6578565) , it was closed out as not an issue. I have checked it on Java8, and it behaves correctly on Windows - it trims the paths and then creates/selects the folder. >From Java9 onwards, the InvalidPathException is thrown, since ShellFolder.java >file uses nio to get the path, and the nio throws the exception as reported in >the bug. Phil suggested that, we should fix the bug at our level if we can, since nio may not consider this to be a problem at their level. Hence this suggested fix. Thanks, Krishna From: Semyon Sadetsky Sent: Friday, February 16, 2018 10:04 PM To: Krishna Addepalli HYPERLINK "mailto:krishna.addepa...@oracle.com"<krishna.addepa...@oracle.com>; HYPERLINK "mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net Subject: Re: <Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space According to Pardeep Sharma comment the bug is reproducible since 6u45. Do you confirm this or it is a regression introduced in 9? >From the stack trace it doesn't look as a client-libs issue but a NIO issue. --Semyon On 02/16/2018 04:40 AM, Krishna Addepalli wrote: Hi Sergey, Phil Please review a fix for JDK-8196673: https://bugs.openjdk.java.net/browse/JDK-8196673 Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Ekaddepalli/8196673/webrev00"http://cr.openjdk.java.net/~kaddepalli/8196673/webrev00 The problem is in Java9 and later, when a directory path that contains leading/trailing space is provided, it throws an InvalidPathException. As per Phil's recommendation, I have added a simple fix, which will trim the path for Windows, whereas for other platforms, it keeps it as it is. Thanks, Krishna