1

問題が発生しました。

これは以下の私の方法です:

public void someMethod()
{
    StringBuilder newFile = new StringBuilder();
    String edited = "My String Line";
    newFile.append(edited);
    newFile.append("\n");
    FileWriter fstreamWrite = new FileWriter("transaction.txt");
    BufferedWriter out = new BufferedWriter(fstreamWrite);
    out.write(newFile.toString());
    out.close();
}

そして、メインクラスでこのメソッドを複数回呼び出すと、このコードは「My String Line」という行で transaction.txt を作成します。しかし、「My String Line」を数回書き込むためにこのメソッドを複数回呼び出すと、行が上書きされ、出力が得られません。

マイストリングライン

マイストリングライン

マイストリングライン

メソッドを3回呼び出すと。

同じメソッドを複数回呼び出すのと同じように、同じ行を複数回書き込む方法はありますか?

4

2 に答える 2

10

ファイルに追加したいと思います。次に、コンストラクターFileWriter(java.io.File,boolean)を使用できます。

パラメーター:

file - 書き込み先の File オブジェクト

append - true の場合、バイトはファイルの先頭ではなく末尾に書き込まれます

したがって、コードを次のように変更します。

new FileWriter("transaction.txt",true);

ファイルに新しい行を書き込むには、BufferedWriter#newLine()を使用します。

行区切りを書き込みます。行区切り文字列は、システム プロパティ line.separator によって定義され、必ずしも単一の改行 ('\n') 文字であるとは限りません。

于 2013-07-18T10:01:44.663 に答える
1

そこに数行を書き込むためだけにファイルを開くのは悪い考えです。より良いアプローチは、Writer を引数としてメソッドに渡すことです。

public void someMethod(BufferedWriter writer) throws IOExcpetion {
    // setup your data to write
    StringBuilder sb = .....
    // actually write it
    writer.write(sb.toString());
    writer.newLine()
}

これがあれば、次のような設定で使用できます。

BufferedWriter bw = null;
try {
    bw = .... // open the writer
    while (...) {
       someMethod(bw);
    }
    bw.close();
} catch (IOException io) {
    // handle IOException here
} 
...
finally {
    // make sure bw is closed
}
于 2013-07-18T10:23:13.583 に答える