我从这段代码中得到一个文件未找到异常,即使它在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;
}
感谢您的帮助:)
答案 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