2

基本的なファイル読み取りをJavaで機能させることに非常に混乱しています。混合信号がたくさん。

私はそれをいくつかの異なる方法で試しましたが、毎回見つからない例外が常に発生します。現在のディレクトリを印刷するために現在のパスに設定されたファイルオブジェクトを確認しました。実際に、開こうとしているファイルが含まれているディレクトリにいます。アクセス許可は、誰もが読み取れるように設定されています。何が起こっているのかわかりません:

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

これはエラーをスローする行であるため、infixLinesを使用する連続する各行もエラーをスローします。

FileInputStreamを使用して試してみましたが、同じ種類のエラーが発生します。

それは単にやっていると言われています

File file = new File("input.infix");
if ( file.exists() )
    System.out.println( "Exists" );

動作します。

非常に混乱。

編集:(スタックトレース?)

ParseInfix.java:13: unreported exception java.io.FileNotFoundException; must be
            BufferedReader infixLines = new BufferedReader(new FileReader (n
                                                           ^
ParseInfix.java:15: unreported exception java.io.IOException; must be caught or
            while ( ( line = infixLines.readLine()) != null )
4

4 に答える 4

8

例外トレースは、あなたのコードが...

BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));

ファイルが存在しない場合はaまたは anをスローする可能性があるため、この可能性を処理するために何かを行う必要があります。FileNotFoundExceptionIOException

最も簡単な方法は、ファイル読み取りコードを次のtry-catchようなブロックでラップすることです...

try {
    BufferedReader infixLines = new BufferedReader ( new FileReader ( "input.infix" ));
    // other reading code here
}
catch (FileNotFoundException e){
    System.out.println(e);
}
catch (IOException e){
    System.out.println(e);
}

例外は、ファイルが見つからないということではありません。ファイルが存在しない場合、状況を処理するためにコードが何をするかを示しているだけです。

最終的に、このcatchブロックではSystem.out.println(). たとえば、GUI プログラムでは、ポップアップ メッセージを表示して、ファイルが存在しないことをユーザーに知らせることができます。

于 2012-05-24T02:53:29.700 に答える
1

この行

BufferedReader infixLines = new BufferedReader (new FileReader("input.infix"));

File: を検索しinput.infix、見つからない場合はFileNotFoundException例外を返します。input.infixが と同じディレクトリにあることを確認してくださいjava file

于 2012-05-24T02:56:59.917 に答える
1

実行時例外ではなく、コンパイルエラーです。

ファイル関連の呼び出しを try-catch ブロック内にラップして処理する必要がありますFileNotFounceExceptionIOException

于 2012-05-24T03:00:03.507 に答える