ファイルを開き、別の関数に渡してデータを書き込むメソッドが 1 つあります。2 番目の方法では、PrintWriter を使用してデータを書き込みます。ただし、誰もが PrintWriter を使用してそのストリームに書き込む必要はありませんでした。
現在、これは次のようになっています(サニタイズされた例...メソッドまたは変数名の選択を批判しないでください)
public void exportRawDataIntoStream(OutputStream os) {
PrintWriter pr = new PrintWriter(os);
printFirstData(pr);
printSecondData(pr);
}
public void exportToFile(File file) {
OutputStream os = null;
try {
os = new BufferedOutputStream(new FileOutputStream(file));
exportRawDataIntoStream(os);
doMoreWithTimeFile(os);
} finally {
if (os != null) {
try {
os.close();
} catch (Exception e ) {
e.printStackTrace();
}
}
}
}
exportRawDataIntoStream の最後に「pr.flush」を配置しない限り、これは機能しません。ストリーム全体が閉じられるため、PrintWriter を閉じることができません。
フラッシュを行うことは正当で信頼できますか? 同じストリームでライターを混在させるために使用する必要がある他のアプローチはありますか、それとも絶対にしないでください。