2016-10-05 15 views
0

私はこの質問について助けを求めていましたが、RAFについて多くのものを見つけましたが、私の質問に答えるものは何も見つかりませんでした。働いている!ファイルからRandomAcessFileを読み込もうとしたときにEOFExceptionエラーが発生しました

私は後でそれを使用してデータベースを構築するためにRAFについて学ぶためにしようとしているように、私はこれらの2つの方法で構成されたデータと呼ばれる単純なクラスを作成しました:

// Writing the desired String into the file 
public void writeFile (String text) { 
    try { 
     RandomAccessFile raf = new RandomAccessFile("text.dat", "rw"); 
     raf.seek(raf.length()); 
     raf.writeUTF(text); 
     raf.close(); 

    } catch (IOException e) { 
     System.out.println("IOException when writing"); 
    } 

} 

// Reading from the file and returning as a single string 
public String readFile() { 
    String output = ""; 

    try { 
     RandomAccessFile raf = new RandomAccessFile("text.dat", "r"); 
     raf.seek(0); 

     output = raf.readUTF(); 
     raf.close(); 

    } catch (EOFException ef) { 

    } catch (FileNotFoundException e) { 
     System.out.println("File not found"); 
    } catch (IOException e) { 
     System.out.println("IOException when reading"); 
     e.printStackTrace(); 
    } 
    return output;   

} 

私は私からこれらのメソッドを呼び出すいますmainクラスのmainメソッド:

Scanner in = new Scanner(System.in); 
String input; 

Data data = new Data(); 
System.out.print("Input text here: "); 
input = in.nextLine(); 

data.writeFile(input); 

System.out.println(data.readFile()); 

ただし、readFileメソッドは空のStringだけを返します。何が間違っているのか分かりません。

ありがとうございました!

+0

例外についての質問を投稿するときは、コードとしてフォーマットされた完全な例外を含める必要があります(エディタ内の '{} 'ボタンを使用してすべてのスペースをインデントします)。あなたは医者に行き、 "気分が良くない"以外の症状を話さずに診断することを期待していますか? –

+0

ありがとう、私は今私の投稿を編集しました。これは私の初めての投稿であり、私は行ってから悪い印象を受けたのは残念です。 –

+0

例外自体を除外しました。 – EJP

答えて

1

EOFExceptionを別途キャッチし、エラーとして処理しないでください。 while()の状態を取り除いてtrueに変更することもできます。 EOFExceptionというのは、ファイルの最後に到達したということです。

また、両方の方法でファイルを閉じるのを忘れました。

+0

私はrrueを検索しましたが、何かを見つけることができないようですが、それはどういう意味ですか?どのように単一のStringが返された出力文字列を通過して保存されないのでしょうか?私の脳はここで重要な何かを欠いている。 EOFExceptionに関する情報をありがとうございます! –

+0

Typo。 「真」。私はそれを修正した。ファイルを閉じなかったためにデータはありません。 – EJP

+0

ありがとう! 2つの方法は両方ともファイルを閉じますが、それでも動作しません。条件をtrueに変更すると、ループは終了しません。 –

関連する問題