我正在使用Windows7。我写了这个简单的java代码:
package filetest;
import java.io.File;
public class FileTest {
public static void main(String[] args) {
File myfile = new File("C://test//test.txt");
if (myfile.exists()) {
System.out.println("file exists");
} else {
System.out.println("file doesn't exist");
}
}
}
文件DOES存在于C:/test/test.txt中,但答案是该文件不存在。 为什么呢?
EDITED: 我已经更改了代码但它仍然找不到该文件,但现在它创建了该文件。所以我可以写到该目录。并且创建的文件名为“test”
package filetest;
import java.io.File;
import java.util.*;
public class FileTest {
public static void main(String[] args) {
File myfile = new File("C:\\test\\test.txt");
final Formatter newfile;
if (myfile.exists()) {
System.out.println("file exists");
} else {
System.out.println("file doesn't exist");
try {
newfile = new Formatter("C://test//test.txt");
System.out.println("file has been created");
} catch(Exception e) {
System.out.println("Error: " + e);
}
}
}
}
答案 0 :(得分:1)
您不需要加倍斜杠。您必须使用"/"
或"\\"
。
编辑:
奇怪的是我尝试了它,"/"
和"\\"
对我来说都很好。事实上,无论我使用的“/”数量是多少都可以...例如"C:////test/////////test.txt"
是可以的。你有另一个问题,我不知道它可能是什么。
答案 1 :(得分:1)
在windows路径中使用的分隔符是'\',你需要转义反斜杠。所以你的代码将是这样的:
public class FileTest {
public static void main(String[] args) {
File myfile = new File("C:\\test\\test.txt");
if (myfile.exists()) {
System.out.println("file exists");
} else {
System.out.println("file doesn't exist");
}
}
}
答案 2 :(得分:1)
我建议使用 isFile()而不是exists()。它是检查路径是否指向文件而不是文件是否存在的更好方法。如果您的路径指向目录, exists()可能会返回true。
答案 3 :(得分:0)
@SSorensen在您的EDITED代码中,您正确添加了反斜杠
@ line 7
File myfile = new File("C:\\test\\test.txt");
但是你忘了用反斜杠@第14行更新斜杠
newfile = new Formatter("C://test//test.txt");