大きなASCIIテキストファイル(20GB)を1行ずつ読み込み、これらの行の一部を別のファイルにコピーしたいとします。次のコード例は、出力ファイルに書き込むときにデータを失います。私はいくつかのprintlnsとその期待どおりに動作してリーダーをテストしました。私はBufferedWriterのバッファを増やそうとしましたが、改善はありませんでした。また、flush()は機能しませんでした。この場合の出力ファイルは約40MBです。BufferedWriterで書き込み中にデータを失う
私はたぶん、あなたはこのことを意味 はティム
public void split() throws Exception{
BufferedReader inStream = new BufferedReader(new FileReader("input.txt"));
BufferedWriter outStream = new BufferedWriter(new FileWriter("output.txt"));
for(int i=0;i<700000;i++){
String tempString = inStream.readLine().trim();
if(doOtherStuff(tempString,i)){
break;
}
outStream.write(tempString);
outStream.newLine();
}
inStream.close();
outStream.close();
}
forループを使用していて、whileループを使用していないのはなぜですか? –
コピーする必要がある行の情報は、ファイルの最初の行で読み取られます。私はこれが問題に関連していないと考えました。 – timmiotooltim
あなたは、どのようなデータが失われているのか、そしてどこであなたのコードが誤動作しているのかわからないので、*** ***はすべて関連しています。私の経験は、ファイルの行数をどのように計算しているかにかかわらず、whileループを使用してBufferedReaderに行間がなくなったことを伝えることができます。それははるかにばかばかしいことです。 –