Code Review Request: 7168172: (fs) Files.isReadable slow on Windows

Kurchi Hazra kurchi.subhra.hazra at oracle.com
Thu Aug 23 14:17:45 PDT 2012


Here is an updated webrev: 
http://cr.openjdk.java.net/~khazra/7168172/webrev.01/

I left the booleans as it is, but removed the modes.length() check.

Thanks,
Kurchi

On 8/23/2012 12:07 PM, Alan Bateman wrote:
> On 23/08/2012 00:33, Ulf Zibis wrote:
>> Am 22.08.2012 20:38, schrieb Kurchi Hazra:
>>> However, it is faster to simply open the file being checked and 
>>> close it. In the case of a directory then, a DirectoryStream can be 
>>> opened and closed to check the same.
>>
>> I would rename checkReadAccess(WindowsPath file) to 
>> tryReadAccess(WindowsPath file)
> The API that the provider defines is checkAccess so I think it's okay 
> to have this private specialized method for read be named 
> checkReadAccess.
>
>
>> :
>>
>>
>> At least the boolean one could be saved easily and (modes.length == 
>> 0) is superfluous:
>>
>>     public void checkAccess(Path obj, AccessMode... modes) throws 
>> IOException {
>>         AccessMode r = null;
>>         AccessMode w = null;
>>         AccessMode x = null;
>>         for (AccessMode mode: modes) {
>>             switch (mode) {
>>                 case READ : r = READ; break;
>>                 case WRITE : w = WRITE; break;
>>                 case EXECUTE : x = EXECUTE; break;
>>                 default: throw new AssertionError("Should not get 
>> here");
>>             }
>>         }
>>
>>         WindowsPath file = WindowsPath.toWindowsPath(obj);
>>
>>         // special-case read access to avoid needing to determine 
>> effective
>>         // access to file
>>         if (w == null && x == null) {
>>             tryReadAccess(file);
>>             return;
>>         }
> You're right that the modes.length == 0 check could be skipped and 
> then it becomes "if (!w && !x) { ... }". I'll leave it to Kurchi as to 
> whether she wants to change this. I'm okay either way.
>
> -Alan
>

-- 
-Kurchi



More information about the nio-dev mailing list