Java无法找到我的文件,即使我非常确定我的目录是正确的

时间:2014-04-06 02:55:43

标签: java

我正在为从txt文件读入的类编写java程序。我将文本文件放在名为Assignment3pckg的包中,并使用如下扫描程序:

Scanner s = new Scanner( new File("./src/Assignment3pckg/studentdata.txt")  );

但它一直在给我

java.io.FileNotFoundException: .\src\Assignment3pckg\studentdata.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at Assignment3pckg.TestHW3.readStudentDataFromFile(TestHW3.java:25)
    at Assignment3pckg.TestHW3.main(TestHW3.java:14)

非常感谢任何见解!

1 个答案:

答案 0 :(得分:2)

您正在为文件使用 relative 路径(而不是绝对路径)。运行它时,相对于Java进程的当前工作目录解析相对路径。

此目录的位置取决于您运行Java的方式。 您可以通过打印找到它:

System.out.println(new File(".").getAbsolutePath());

您可以通过以下方式解决此问题:

  • 使您的路径相对于正确的目录
  • 使用绝对路径(在Windows上,以C:\或其他驱动器号开头)

请注意,在Java中,您必须在String中转义反斜杠。所以C:\myproject\src\Assignment3pckg\studentdata.txt变为"C:\\myproject\\src\\Assignment3pckg\\studentdata.txt"作为Java字符串。或"C:/myproject/src/Assignment3pckg/studentdata.txt",因为Windows并不介意使用斜杠而不是反斜杠。