对于Linux中的目录,Java File.isDirectory()返回False

对于Linux中的目录,Java File.isDirectory()返回False,java,file-io,Java,File Io,请参阅代码片段: File[] additionalFiles = new File(FILE_PATH).listFiles(); boolean isDirectory = file.isDirectory(); 我已经验证了目录路径是正确的,当我在Windows上运行代码时,isDirectory的值是true(应该是)。关于为什么会在Linux(RedHat Enterprise Linux)上出现这种情况,有什么建议吗?如果我没记错的话,符号链接不会读作目录。正确的解决方法是: n

请参阅代码片段:

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

我已经验证了目录路径是正确的,当我在Windows上运行代码时,isDirectory的值是true(应该是)。关于为什么会在Linux(RedHat Enterprise Linux)上出现这种情况,有什么建议吗?

如果我没记错的话,符号链接不会读作目录。正确的解决方法是:

 new File(FILE_PATH).getCanonicalFile().isDirectory(); 
(注意:未经测试,我没有一个linux设备可以轻松测试此功能)。

签出此链接

你可能有这个问题


否则,我可能会猜测文件权限存在问题(尽管这可能会抛出安全异常,我假设您的代码不会将其包装并返回false),或者可能是我不太了解的符号链接问题。

我曾经遇到过此问题。我的案例非常有趣,我从属性文件中读取路径,该路径在字符串末尾包含一个制表符。这就是路径未被识别为目录的原因

该目录是常规目录还是符号链接?什么版本的Java?什么版本的RH?目录名称中是否包含任何异常(非英语)字符?文件路径的值是多少?它是否可能包含Windows风格的文件分隔符(“\”)?我相信它是一个simlink,目录位于共享服务器上-这会产生什么影响?Java版本是6更新17。右侧版本是Enterprise RedHat 5。该目录包含所有小写字母,没有特殊字符,并且文件分隔符正确(我在运行程序时打印了目录,然后在“cd”之后复制并粘贴到命令行中,并成功地将其复制并粘贴到目录中)。