1

所以我有这样的事情:

File testFile = new File("/opt/tester/etc/test.properties");
if(!testFile.exists()){
   System.exit(0) }

它总是退出,查看调试器,我看到该文件是使用“\opt\tester\etc\test.properties”的“路径”属性和 1 的“前缀长度”创建的

该文件存在于系统上,我可以对其执行“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 身份运行,路径上没有符号链接)

任何想法为什么会这样?谢谢你。

更新:刚刚在同一目录上创建了一个文件'test',在里面添加了一个带有'nano'的单词,但仍然不起作用..所以我猜这个文件没问题,还有别的

更新2:继续我的书未解决..我认为这与我用/设置的路径有关,并且在调试器上查看时它存储为\。但是当没有通过调试器运行时运行良好。所以,我认为是由我的环境引起的(在 Linux 上运行的代码被 Windows 7 上运行的 Mule Studio 1.0.0(基于 eclipse 3.6.1)远程调试)。

更新 3:读到一些内容,说 VM 上的 32 位调试器和客户端中的 64 位调试器可能与故障有关。所以我将所有内容都移到了本地机器上,现在可以正常调试了。

4

4 回答 4

0

我的部分愚蠢,我正在远程调试!所以我认为eclipse正在我的系统上而不是远程机器上寻找文件。(第一次使用远程调试)

(这不是正确的答案,因为我刚刚了解到远程调试根本不应该干扰这个)

于 2012-06-26T16:50:03.613 回答
0

您在评论中说它在 Windows 上完美运行。这显然是一个用户权限错误。在终端模拟器中尝试此命令

sudo chmod 777 /path_to_file

更多关于这里的命令。

它将绕过任何用户访问权限错误。

之后,再次尝试运行Kumar Vivek Mitra's 代码。

于 2014-03-09T03:22:34.023 回答
0

我知道这可能看起来很幼稚,但是您仍然可以尝试此代码,因为它对我有用...

要将文件写入磁盘:

try {
    File f = new File("path_of_file"); 
    FileWriter fw = new FileWriter(f);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write("Hello");
    bw.close();
    fw.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

此代码检查指定位置的文件是否存在:

File f = new File("path_of_file");
if(f.exists()){
    System.out.println("success");
}
else{
    System.out.println("fail");
}
于 2012-06-26T17:02:17.450 回答
0

我怀疑你有一个错误,是因为没有将你的if条件括在{}大括号中。if在没有大括号的情况下,如果在和之间有任何线System.exit(0),则将始终调用出口(因为它不是if子句的一部分)。

于 2012-06-26T16:52:02.413 回答