找不到createNewFile的文件

时间:2013-04-01 16:36:48

标签: java ioexception filenotfoundexception

我正在用Java编写一个私有方法来读取和写入一个简单的文本文件,如果它不存在,它应该创建,因为createNewFile()会先检查它。

private boolean updateGameQuota(String name, String quantity) {
    ...
    File quotaLog = new File("seller-quotas.txt");
    quotaLog.createNewFile();
    ...
    return ret;
}

编译时错误是:SmsFunctions.java:256:错误:未报告的异常IOException;必须被抓住或宣布被抛出         quotaLog.createNewFile();                               ^ 1错误

将它放在try-catch块中似乎不是问题,因为我尝试过(也尝试传递quotaLog的许多其他行)但最终我明白了其他错误的地方。 File对象很好,但是如果我尝试使用createNewFile或者说

FileReader sQReader = new FileReader(quotaLog);

我得到一个FileNotFoundException,即使该文件肯定存在,我在其他文本文件上尝试了这个,这些文件在其他地方成功读取并具有相同的结果。

非常感谢任何帮助或想法!

更新: 所以最后我的问题确实只是把try-catch块放在所有东西上,并确保首先在这些块之外创建设置的变量。我的困惑来自于一种错误的认识,即文件编制者/文件编写者不需要尝试捕获块(我可以发誓我已经多次使用它们)并且错误实际上是其他东西的指示。 也许在关闭线程之前,有人可以详细说明为什么Java并不总是对此大惊小怪,如果这是真的?

谢谢!

1 个答案:

答案 0 :(得分:1)

File.createNewFile()可以抛出一个IOException(一个已检查的异常)并且需要在try-catch块中包围,或者你正在使用它的方法需要声明为throws IOException并且你需要在上游处理它。

要调试FileNotFoundException,您可以尝试:

File quotaLog = new File("seller-quotas.txt");
System.out.println(quotaLog.getAbsolutePath());

使用File.getAbsolutePath()方法打印文件存在的位置。