FileNotFoundException - 在java中读取文本文件

时间:2014-05-09 09:33:33

标签: java filenotfoundexception

我从这段代码中得到一个文件未找到异常,即使它在try catch语句中,我不确定是什么错误,该文件在项目文件夹中,并被称为'someFile.txt'。这是主要方法:

public static void main(String[] args) {
    if (args.length == 0) {
        System.out.println("no arguments given");
        return;
    }
    double FRE = sortFile(args[0]);
    System.out.println("Readability of file " + args[0] + "= " + FRE);

}

这是发生异常的sortFile方法:

public static double sortFile(String FileName) {
    int nWords = 0;
    int nSyllables = 0;
    int nSentences = 0;
    File text = new File(FileName);
    try {
        Scanner sc = new Scanner(text);
        while (sc.hasNext()) {
            contents.add(sc.next());
            ++nWords;
        }
        sc.close();
        for (String e : contents) {
            getNumSyllables(e);
        }

    } catch (FileNotFoundException e) {
        System.out.println("The file" + FileName + "could not be opened.");
        e.printStackTrace();
    }
    double FRE = getFRE(nWords, nSyllables, nSentences);
    return FRE;
}

感谢您的帮助:)

3 个答案:

答案 0 :(得分:3)

好吧,该位置不存在该文件。尝试添加

  

的System.out.println(text.getAbsolutePath())

查看文件的预期位置。请注意,当您提供相对路径(例如some/path/filename.ext)时,这是相对于工作目录的。工作目录是java程序启动的文件夹。

如果您正在使用IDE(例如Eclipse,IntelliJ,Netbeans),则可以在运行配置中定义工作目录。

请参阅:

答案 1 :(得分:1)

  

我从这段代码中获取了一个未找到文件的例外,即使它已经存在   在try catch语句中

try-catch不会阻止Exception被抛出。它只是在抛出catch时执行Exception块中的代码,而您只是在catch块中打印堆栈跟踪,这通常是在未捕获的异常上打印的。

要解决您的实际问题,请先尝试将完整路径传递给该文件,验证其是否有效,然后使用Tim的答案调试您的绝对路径。

答案 2 :(得分:0)

尝试使用绝对路径启动程序。

java yourclassname absolutepath_to_someFile.txt