2012-05-29 9 views
7

OK、テキストファイルに複数の行を書くときに問題があります。最後にファイルを上書きするのではなく、ファイルを上書きするときに問題が発生する

プログラムが実行されますが、それは、私はそれが4回実行したい場合は、テキストファイルはのようになりますたび

を新しい行を使用しません。

代わり
a 
b 
c 
d 

、それは次のようになります。

d 

この問題を解決する方法を知っているのは誰ですか?すべてのインポートが正しくインポートされます。

ソース(それが少し編集されています、すべてが適切に定義されていると仮定):

import java.io.*; 
public class Compiler { 
public static void main (String args[]) throws IOException 
{ 
    //there's lots of code here 
    BufferedWriter outStream= new BufferedWriter(new FileWriter("output.txt")); 
    outStream.newLine(); 
    outStream.write(output); 
    outStream.close(); 
} 

} 
+1

ただ警告ですが、これは危険なほど「コードは何ですか?」という質問に近いです。しかし、あなたは単に助けを求めるだけではなかったので(あなたがこれまで行ってきたことを示した)、私は目が見えなくなります。 –

答えて

15

あなたはそれの最後に追加されていることを、あなたはFileWriterのインスタンスを作成するときにことを確認します。これは、this specific FileWriter constructorを使用することによって行うことができ、booleanを第2のパラメータとして追加します。このbooleanは、ファイルを上書きするのではなく、ファイル末尾に追加するようにFileWriterに指示します。

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true)); 
+0

私はJavaの入力と出力に少し新しかったので、例を得ることができますか?私は今すぐテストするのに理想的な場所ではありません(このワークステーションにはJDKもIDEもありません) – Azulflame

+1

私の答えは、この作業を行うために適用する必要がある変更をすでに提供しています。 –

+0

コードがないときは書きました。答えてくれてありがとう。 – Azulflame

2

デフォルトでは、FileWriterがファイルを上書きします。何をしたい場合がありますことは、次のように読者を定義している:
new FileWriter("encoded.txt", true)
ファイルではなく上書きであることのにを追加されますこの方法です。

希望します。

0

このコードが何をすべきかわかりません。ループ内のFileWriterを閉じてから再度書き込むため、入力文字列が複数の文字長の場合はエラーが発生します。

私はあなたの質問を次のように解釈しています。なぜ最新の出力のみがファイルに含まれているのだろうか。その場合は、追加モードでFileWriterを作成していないためです。 FileWriterで利用可能なさまざまなコンストラクタを見て、ファイルに追加できるものを使用します。