Java 仅当流已打开时才关闭流
考虑以下代码:Java 仅当流已打开时才关闭流,java,objectoutputstream,Java,Objectoutputstream,考虑以下代码: FileOutputStream stream=null; ObjectOutputStream objStr=null; try { stream=new FileOutputStream(defaultFile); objStr=new ObjectOutputStream(stream); objStr.writeObject(obj); objStr.close();
FileOutputStream stream=null;
ObjectOutputStream objStr=null;
try
{
stream=new FileOutputStream(defaultFile);
objStr=new ObjectOutputStream(stream);
objStr.writeObject(obj);
objStr.close();
}
catch(FileNotFoundException e)
{
System.out.println("Il file "+ defaultFile+ " non è stato trovato\n");
}
catch(IOException e)
{
stream.close();
System.out.println("Si è verificato un problema di I/O nell' apertura dello stream");
}
在第二个catch块中,我关闭了流,但我不确定它是否应该关闭。
如果ObjectOutputStream的构造函数失败,它将进入第二个捕获,但是我确定在这种情况下,FileOutputStream仍然保持打开状态吗?
我应该写一个finally块来处理所有异常吗?
我很难弄清楚所有的情况。如果您使用的是Java 7,您可以使用该语句为您处理所有结案
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(defaultFile))) {
oos.writeObject(obj);
} catch (IOException e) {
e.printStackTrace();
}
如果您使用的是Java7,那么可以使用该语句为您处理所有关闭操作
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(defaultFile))) {
oos.writeObject(obj);
} catch (IOException e) {
e.printStackTrace();
}
您可以在关闭流之前添加if条件,如下所示
if(stream != null) {
stream.close();
}
您可以在关闭流之前添加if条件,如下所示
if(stream != null) {
stream.close();
}
在try-catch语句中添加finally块,并在那里执行结束操作。要避免再次尝试捕获和空检查,您可以使用commons.io:
在try-catch语句中添加finally块,并在那里执行结束操作。要避免再次尝试捕获和空检查,您可以使用commons.io:
在哪里关闭流?@Ramy AI Zuhouri块退出时,try with resources语句为您关闭流。阅读我给你的链接。我在哪里关闭流?@Ramy AI Zuhouri在块退出时,try with resources语句为你关闭流。阅读我给你的链接。