簡體   English   中英

java file.exists找不到我的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM