[英]java file.exists doesn't find my file
我正在使用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");
}
}
}
該文件確實存在於C:/test/test.txt中,但答案是該文件不存在。 為什么?
編輯:我更改了代碼,它仍然找不到文件,但是現在它創建了文件。 因此,我可以寫入該目錄。 並將創建的文件命名為“ 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);
}
}
}
}
您不需要加倍斜杠。 您必須使用"/"
或"\\\\"
。
編輯:
奇怪的是我嘗試了一下, "/"
和"\\\\"
對我來說都很好。 實際上,無論我使用多少“ /”,它都可以工作……例如, "C:////test/////////test.txt"
是可以的。 您還有另一個問題,我不知道這可能是什么。
在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");
}
}
}
我建議使用isFile()而不是exist ()。 這是一種檢查路徑是否指向文件而不是文件是否存在的更好方法。 如果您的路徑指向目錄,則exist()可能返回true。
@SSorensen在編輯的代碼中,您正確添加了反斜杠
@第7行
File myfile = new File("C:\\test\\test.txt");
但您忘了在第14行使用反斜杠更新斜杠
newfile = new Formatter("C://test//test.txt");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.