简体   繁体   中英

Java File.isDirectory() returns False for a Directory in Linux

Please see code snippet:

File[] additionalFiles = new File(FILE_PATH).listFiles();
boolean isDirectory = file.isDirectory();

I have verified that the directory path is correct, and when I run the code on Windows, the value of isDirectory is true (as it should be). Any suggestions as to why this occurs on Linux (RedHat Enterprise Linux)?

Symlinks don't read as directories, if I remember correctly. The right way around that is:

 new File(FILE_PATH).getCanonicalFile().isDirectory(); 

(NOTE: Untested, I don't have a linux box to test this on easily).

I experienced this issue once. My case is so funny, I was reading the path from a properties file and that path contained a tab character at the end of the string. That was the reason why the path wasn't recognized as a directory

Checkout this link http://bugs.sun.com/view_bug.do;jsessionid=56e03cb783aaf9725daf5ec8d8?bug_id=6539692

You may have this issue.

Otherwise I would guess an issue with file permissions (though that might throw back security exception and I am assuming your code does not wrap it and return false) or may be a sym link issue that I dont know much about.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM