2

ファイルに行ごとに何かを書き込みたい。このプロセスには多くの時間がかかり、時々キャンセルされるという問題があります。現在のバージョンでは、最後にファイルに内容が書き込まれます。行ごとにファイルに書き込むことは可能ですか?

たとえば、4 行目 (400 行目) の後に退避すると、ファイルは現在空です。しかし、私はすでにファイルに4行を入れたいと思っています。

これが私のコードです:

String path = args[0];
String filename = args[1];

BufferedReader bufRdr = // this does not matter

BufferedWriter out = null;
FileWriter fstream;
try {
    fstream = new FileWriter(path + "Temp_" + filename);
    out = new BufferedWriter(fstream);
} catch (IOException e) {
    System.out.println(e.toString());
}

String line = null;

try {
    while ((line = bufRdr.readLine()) != null) {            
        // HERE I'm doing the writing with out.write
        out.write(...);
    }
} catch (IOException e) {
    System.out.println(e.toString());
}

try {
    out.close();
} catch (IOException e) {
    System.out.println(e.toString());
}
4

5 に答える 5

3

out.flush()後に試すout.write(...)

于 2013-05-08T08:27:43.753 に答える
2

Java ドキュメントFileWriterを考慮すると、BufferedWriter を使用せずに、FileWriter を使用してファイルに直接書き込むことができます。

また、指摘したように、バッファを閉じる前にデータをフラッシュする必要があります。この関数writeはバッファを埋めるだけで、ディスク上のファイルには書き込みません。この操作はflushorを使用して行われcloseます (バッファーの現在の内容をディスクに書き込むため)。これら 2 つの関数の違いは、flush後から書き込んcloseでストリームを確実に閉じられるようにすることです。

于 2013-05-08T08:40:44.333 に答える
1

通常、バッファに書き込むデータは、out.flush() または out.close() が閉じられるまで実際には書き込まれません。あなたの要件では、 out.flush(); を使用する必要があります。

于 2013-05-14T07:42:15.990 に答える