在 Java 中,我们通常使用一个流对象来包装另一个流类以提高效率。例如:
Object obj = new MyClass();
try {
FileOutputStream fos = new FileOutputStream("test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.flush();
} catch(IOException e) {
e.printStackTrace();
} finally {
fos.close();
oos.close();
}
我ObjectOutputStream
用FileOutputStream
. 类似的情况是使用BufferedReader
to wrap InputStreamReader
。
我的问题是如何按顺序正确关闭fos
和。oos
应该先关闭哪个?或者只需要关闭其中一个。通常关闭两个流都会起作用,但我对这种方式感到不舒服,因为我不理解语义。我只是使用 close 方法关闭所有内容,而我不知道为什么不直接关闭fos
或oos
.