Chr*_*uin 4 java file-io outputstream
我有一个方法打开一个文件并传递给另一个函数来写一些数据.第二种方法想要使用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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
除非我在exportRawDataIntoStream的末尾加上'pr.flush',否则这不起作用.我无法关闭PrintWriter,因为它会关闭整个流.
冲洗是否合法可靠?我是否应该使用其他方法将Writers混合在同一个流上,或者我绝对不应该这样做?
是的,同花顺应该是可靠的.它的基本作用是"推动"任何多余的数据.
但是,公平地说,这只适用于你的基本作家.记住,我认为这是最大的,如果不是全部的话.
但考虑一些做作的特殊作家.关闭时"做其他事"的事情.像加密或压缩流一样.
比如,你有一个"base64编码器编写器",它无法安全地写出潜在的尾随"==",直到它完成,这是一个关闭,而不是刷新.
但是有了这个警告,对于你使用PrintWriter的情况,它应该不是问题.