所以我有这样的事情:
File testFile = new File("/opt/tester/etc/test.properties");
if(!testFile.exists()){
System.exit(0) }
它总是退出,看着调试器我看到文件是用“path”属性“\ opt \ tester \ etc \ test.properties”创建的,'prefixLength'是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身份运行,路径上没有符号链接)
为什么会发生这种情况的任何想法? 谢谢。
UPDATE:刚刚在同一个目录上创建了一个'test'文件,用'nano'添加了一个单词,但仍然无效..所以我猜文件还可以,还有别的
更新2:我的书籍尚未解析..我认为它与我设置的路径有关/并且在查看调试器时它存储为\。但是当没有通过调试器运行时运行正常。所以,我认为这是由我的环境造成的(在Linux上运行的代码由在Windows 7上运行的Mule Studio 1.0.0(基于eclipse 3.6.1)进行远程调试)。
更新3:读取一些内容,说VM上的32位调试器和客户端的64位调试器可能与毛刺有关..所以我把所有内容都移到我的本地机器上,现在是调试很好。
答案 0 :(得分:0)
我的愚蠢,我正在远程调试!!所以我认为eclipse正在我的系统而不是远程机器上寻找文件。 (第一次使用远程调试)
(这不是正确的答案,因为我刚学会了远程调试不应该干扰这一点)
答案 1 :(得分:0)
我怀疑您因if
括号中未包含{}
条件而导致错误。如果没有大括号,如果if
和System.exit(0)
之间有任何行,则将始终调用退出(因为它不是if
子句的一部分)。
答案 2 :(得分: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");
}
答案 3 :(得分:0)
您在评论中表示它在Windows上运行良好。这显然是用户权限错误。 在终端仿真程序中尝试此命令
sudo chmod 777 /path_to_file
有关命令here的更多信息。
它将绕过任何用户访问权限错误。
然后,再次尝试运行Kumar Vivek Mitra
代码。