java file.exists找不到我的文件

时间:2014-08-12 14:15:17

标签: java file exists

我正在使用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);                
            }
        }

    }

}

4 个答案:

答案 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");