我正在尝试从文件中读取并将每行输入到ArrayList中。我的文件与主java文件位于同一文件夹中。文件名中没有拼写错误。有人能帮我弄清楚出了什么问题吗?
Scanner in = new Scanner(new FileReader("lab02in.txt"));
while(in.hasNextLine())
{
String line = in.nextLine();
countries.add(line);
}
in.close();
System.out.println("Printing New list after adding from file");
displayCountries(countries);
我收到此错误:
Exception in thread "main" java.io.FileNotFoundException: lab02in.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at lab2.Lab2.main(Lab2.java:50)
Java Result: 1
答案 0 :(得分:1)
如果您正确运行Java程序,则当前目录是lab2
上方的目录。然后,您声明该文件与Java源代码位于同一目录中。代码查找当前目录,而不是源代码目录,因此找不到您的文件。
请尝试以下方法之一:
lab2
上方)。这是首选,因为源代码和资源不应混用。 OR lab2/
。FileReader
添加到您的相对路径名
醇>
代码:
Scanner in = new Scanner(new FileReader("lab02/lab02in.txt"));
答案 1 :(得分:0)
VM的当前工作目录与文件所在的目录不同。如果文件lab02in.txt
是静态的并且相对于类(即在同一目录中),您可以(并且应该)使用getResourceAsStream
加载它。否则,您需要指定路径。
答案 2 :(得分:0)
检查System.out.println(System.getProperty(“user.dir”)); 这应该可以让你知道它在哪里寻找文件。