我有一种方法可以打开文件并传递给另一个函数以向其中写入一些数据。第二种方法想要使用 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,因为这会关闭整个流。
冲洗合法且可靠吗?我应该使用其他方法在同一个流上混合 Writer,还是我绝对不应该这样做?