【发布时间】:2014-09-22 05:35:03
【问题描述】:
我遇到过 file.isFile() 返回 false 的情况,这表明文件不是“正常”的。但是,我找不到“正常”意味着什么的定义。文档link to Oracle 状态:
如果文件不是目录,并且满足其他系统相关标准,则该文件是正常的。
该文件归_www:staff 所有,权限为-rw-r--r--。该目录也归_www:staff 所有,并拥有drwxrw-r-- 的权限。访问文件的进程归bob:staff 所有。系统为 MacOS 10.9。该进程可以很好地读取和加载和显示文件;唯一的问题是对 isFile() 的调用返回 false,这意味着 Java 认为它不是普通文件。
那么,回到更大的问题,在什么情况下,即使文件确实存在、路径正确且文件可访问,此调用也会返回 false?
【问题讨论】:
-
该文件显然不“满足其他系统相关标准”
-
可能是某种符号链接,或者在使用 Mac OS 时,它是别名 en.wikipedia.org/wiki/Alias_(Mac_OS)
-
您缺少一个信息:
File#isFile()在文件不存在时也会返回false(demo)。有趣的是它不会触发FileNotFoundException,它只是返回false。所以我的问题是:你 100% 确定你的文件存在吗? -
@Andi Krusch:该文件是真实文件,而不是符号链接。
-
@BackSlash:文件存在:我的Java代码可以打开文件并处理它;只是 isFile() 返回 false。
标签: java macos file osx-mavericks