【发布时间】:2018-08-19 20:04:25
【问题描述】:
我应该只使用 try/catch/finally 块关闭 PrintStream 还是有其他方法?
或者这是 IDE 中的错误?
public void writeData(String fileDir) throws IOException{
FileOutputStream fos = new FileOutputStream(fileDir);
PrintStream ps = new PrintStream(fos);
for(int i = 0; i < 3; i++) {
ps.print(stringData[i]);
ps.print("-");
ps.print(doubleData[i]);
ps.print("-");
ps.print(intData[i]);
ps.println();
boolean control = ps.checkError();
if(control) {
throw new IOException("IO exception occurred!");
}
}
ps.close();
System.out.println("Data transfer completed!");
}
【问题讨论】:
-
使用try with resources。此代码不保证关闭流。
-
您的代码在至少一个代码路径上抛出
IOException。如果没有try-finally(或try-with-resources),您会将fos后面的文件句柄打开。
标签: java resource-leak printstream