所以我有这样的东西:
File testFile = new File("/opt/tester/etc/test.properties");
if(!testFile.exists()){
System.exit(0) }
它总是退出,查看调试器我看到文件是用“\opt\tester\etc\test.properties”的“路径”属性和 1 的“prefixLength”创建的
该文件存在于系统中,我可以对它执行“ls”和"file"命令,它工作正常, 在阅读权限等信息后,我将文件的属性更改为:
-rw-rw-rw-. 1 root root 475 Jun 18 14:11 /opt/tester/etc/test.properties
之前:
-rw-------. 1 user1 user1 475 Jun 18 14:11 /opt/tester/etc/test.properties
(我的 java 类以 root 身份运行,路径上没有符号链接(symbolic link))
知道为什么会这样吗? 谢谢。
更新: 刚刚在同一目录中创建了一个文件“test”,并在其中添加了一个带有“nano”的词,但仍然无法正常工作。所以我猜这个文件没问题,是别的东西
更新 2: 将我的书列为 Unresolved 问题。我认为这与我用/设置的路径有关,并且在查看调试器时它存储为\。但是当没有通过调试器运行时运行良好。所以,我认为是我的环境造成的(运行在Linux上的代码被运行在Windows 7上的Mule Studio 1.0.0(基于eclipse 3.6.1)远程调试)。
更新 3: 读到一些东西说可能 VM 上的 32 位调试器和客户端中的 64 位调试器可能与故障有关..所以我把所有东西都移到了我的本地机器上,现在是调试正常。
最佳答案
我怀疑您的错误是由于未将 if
条件包含在 {}
大括号中造成的。在没有大括号的情况下,如果 if
和 System.exit(0)
之间有任何一行,那么将始终调用退出(因为它不是if
子句)。
关于java - file.exists() 意外返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211613/