0

createNewFile() が最初にそれをチェックするため、存在しない場合は作成する必要がある単純なテキストファイルを読み書きするプライベートメソッドを Java で作成しています。

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 ブロックを配置し、それらのブロック内に設定された変数が最初にそれらのブロックの外で作成されるようにすることでした。私の混乱は、ファイルレーダー/ファイルライターが try catch ブロックを使用する必要がないという誤った確信から生じており (何度も使用したことがないと断言できます)、エラーは実際には何か他のことを示していました。スレッドを閉じる前に、Java が常に大騒ぎするわけではない理由を詳しく説明してくれる人がいるかもしれません。

ありがとう!

4

1 に答える 1

1

File.createNewFile()IOException (チェック済み例外) をスローする可能性があり、try-catch ブロックで囲む必要があるか、それを使用しているメソッドを として宣言throws IOExceptionする必要があり、上流で処理する必要があります。

FileNotFoundException をデバッグするには、次を試してください。

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

メソッドを使用してFile.getAbsolutePath()、ファイルが存在すると予想される場所を印刷します。

于 2013-04-01T16:41:29.713 に答える