格式化程序仅在关闭流时才写出,这是真的吗?
代码:
public void save(String content, String filename) {
if(filename!=""){
setFileName(filename);
try {
output = new Formatter(new File(fileName));
output.format("%s",content);
} catch (FormatterClosedException ex){
System.err.println("Error writing to file");
return;
} catch ( NoSuchElementException ex){
System.err.println("invalid input");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
output.close();
}
起初我忘记添加带有output.close()的finally block ,当该方法被调用时它不会写任何东西。那么,格式化程序仅在关闭流时才实际写入其内容,这样正确吗?
最佳答案
仅当您调用 close()
时才访问资源(在本例中为文件)的假设无效。
通过调用close()
,您可以确保写入完成并释放资源。
对它的写入取决于类BufferedWriter
,这意味着当超过缓冲区大小时,数据将从[缓冲区]移动到资源[文件]。您可以通过调用 flush()
强制您的应用执行此操作,这就是 close()
的作用。
缓冲区长度为 1KB(8192 位)时的默认大小。
关于Java 格式化程序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042609/