读取Java中的文件错误?

时间:2014-01-18 00:14:11

标签: java arraylist java.util.scanner filereader

我正在尝试从文件中读取并将每行输入到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

3 个答案:

答案 0 :(得分:1)

如果您正确运行Java程序,则当前目录是lab2上方的目录。然后,您声明该文件与Java源代码位于同一目录中。代码查找当前目录,而不是源代码目录,因此找不到您的文件。

请尝试以下方法之一:

  1. 将文本文件移动到当前目录(lab2上方)。这是首选,因为源代码和资源不应混用。 OR
  2. 在创建lab2/
  3. 时,将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”)); 这应该可以让你知道它在哪里寻找文件。