2010-11-24 10 views
2

Javaを使ってテキストファイルに行を追加しようとしています。私のプログラムを実行すると、単純な行を追加することになりますが、私のプログラムは新しいデータを書き込む前にテキストファイルの古いデータをすべて削除しています。テキストファイルをJavaで上書きするのではなく、どのように追加しますか?

FileWriter fw = null; 
    PrintWriter pw = null; 
    try { 
     fw = new FileWriter("output.txt"); 
     pw = new PrintWriter(fw); 

    pw.write("testing line \n"); 
     pw.close(); 
     fw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(FileAccessView.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

重複:http://stackoverflow.com/questions/2738448/java-io-how-to-append-to-an-既存のテキストファイル – Poindexter

+2

pw.close()を呼び出すと、fw.close()が呼び出されます。 –

答えて

20

変更この: - 効果的にfalseにデフォルトを "追加"

fw = new FileWriter("output.txt"); 

fw = new FileWriter("output.txt", true); 

の詳細については javadocを参照してください理由はここに

はコードです。私はあなたではなく、オペレーティングシステムのデフォルトを使用するよりも、使用する文字エンコーディングを指定することができますよう、 OutputStreamWriterに包まれ FileOutputStreamを使用することを好む - FileWriterは、一般的に使用するのに最適なクラスではないことを

注意。これに

fw = new FileWriter("output.txt"); 

:この

+0

うわー、同じ時間を2番目に転記しました。 :O – Powerlord

+0

多くのおかげでどのように私は新しい行にテキストを追加することができます – Afzaal

+0

私は誰が私はaccpetを考えていた: – Afzaal

6

変更

fw = new FileWriter("output.txt", true); 

FileWriterconstructorの二番目の引数はあなたが開いたりしていないファイルに追加するかどうかです。これにより、書き込みの前にファイルポインタがファイルの最後に移動します。 JavaDocから

1

使用

fw = new FileWriter("output.txt", true); 

: Fileオブジェクトを指定してFileWriterオブジェクトを構築

。 2番目の引数が の場合、バイトは の先頭ではなく、ファイル末尾の に書き込まれます。

1

つのオプション:

  1. 難しい方法:ファイル全体を読んで、それを書き出すプラス新しいデータ。
  2. 簡単な方法: "追記" モードでファイルを開きます。new FileWriter(path, true);
+0

Sunが私に簡単なオプションを与えたとき、難しいやり方で苦労するのはなぜですか? (私はサンとは言ったのですか?): –

+0

一般に、あなたはしません。サディスティックな先生の中には、それを両方の方法でやってもらえるかもしれないので、 "簡単な方法"を評価するだけです。この質問は「宿題」とタグ付けされるほど簡単です。しかし、ええ、オプションを与えられた...毎回簡単な方法。 –

+0

Storer氏を守るために、容易な方法からの機能的な違いがあれば、簡単な方法が不十分な状況が存在する可能性があるため、困難な方法を知ることは良いことです。この場合と同様に、ファイルの内容について何かを知る必要がある場合は、ファイルに書き込む前に、行番号または合計を含める必要があります。 – Jay

関連する問題