【发布时间】:2010-10-29 12:39:50
【问题描述】:
我遇到了一个错误,我似乎找不到任何背后的逻辑。我有这个 File 对象,它是这样创建的:
File file = new File("utilities/data/someTextFile.txt");
然后我执行file.exists(),它返回false (!?)。如果找不到该文件,我会将f.getAbsolutePath() 记录到一个文件中。当我查看路径时,似乎还可以。我可以将完整的路径复制粘贴到 Windows 的“运行”窗口中,文件可以正常打开。
该文件始终存在,在我的应用程序运行期间不会被删除或更改。它位于本地机器上。
这似乎只在某些情况下发生。我可以随时重现故障,但我确信文件对象的路径不会因我为重现故障而采取的操作而改变。
什么会导致 file.exists() 返回 false?这是否与权限或文件锁定等有关?
【问题讨论】:
-
那么,即使exists()返回false,是否可以从文件中读取?
-
是的,即使 exists() 返回 false,我也可以从文件中读取。
-
重现故障究竟需要什么?
-
这是在一个应用程序内部,它调用用 matlab 编写的函数并编译到 java 应用程序中。似乎改变“当前目录”的matlab函数导致问题出现。我在创建文件对象时使用的是绝对路径,所以这应该不是问题 - 但它似乎是。我当然验证了文件对象的绝对路径,是正确的(和matlab函数改变当前目录之前一样)。
-
您是否有机会使用远程目录(例如 NFS 挂载)?