【问题标题】:File Not Found after throws IOException抛出 IOException 后未找到文件
【发布时间】:2015-03-19 09:53:36
【问题描述】:

当我尝试读取文件时出现此异常:

ERROR:
Exception in thread "main" java.io.FileNotFoundException: newfile.txt (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.util.Scanner.<init>(Scanner.java:611)
    at Postal.main(Postal.java:19)


import java.util.Scanner;
import java.io.*;

public class Postal   { 

    public static void main(String[] args) throws Exception   {
        /*** Local Variables ***/
        String line;
        Scanner filescan;
        File file = new File("newfile.txt");
        filescan = new Scanner(file);
        userInfo book = new userInfo();

        /*** Loop through newfile.txt ***/
        while (filescan.hasNext())   {
          line = filescan.nextLine();
          book.addNew(line);
        }

        book.print(0);
    }

}

【问题讨论】:

  • 您得到的是运行时异常,而不是编译器错误。异常原因,类路径中找不到文件。
  • @JunedAsan )1) 是 (2) 否,在当前目录中不可用。

标签: java java.util.scanner java-io ioexception


【解决方案1】:

Scanner 类使用FileInputStream 来读取文件的内容。 但是它找不到该文件,因此引发了异常。 您正在使用文件的相对路径,请尝试使用绝对路径。

【讨论】:

    【解决方案2】:

    改用这个:

    File file = new File(getClass().getResource("newfile.txt"));
    

    【讨论】:

    • 您可以通过这种方式加载文件或使用file.exists() 处理错误。
    • 不会编译,因为getClass().getResource()需要一个URL,不能使用字符串。
    • 然后试试这个:File file = new File(getClass().getResource(new URL("newfile.txt")));
    • 这只有在文件与当前类在同一个包中时才有效,这在任何地方都没有说明。
    【解决方案3】:

    提供您要创建文件的位置的绝对路径。并检查用户是否有权在那里创建文件。找到路径的一种方法是:

    File f = new File("NewFile.txt");
    if (!f.exists()) {
        throw new FileNotFoundException("Failed to find file: " + 
            f.getAbsolutePath());
    }
    

    试试这个打开文件:

    File f = new File("/path-to-file/NewFile.txt");
    

    【讨论】:

    • 您不需要exists() 检查。打开文件已经这样做了。
    • @EJP 你应该试试看会发生什么。我很想看到输出。
    猜你喜欢
    • 2014-12-18
    • 2021-02-09
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多