我的代码如下。
Map<String, String> aMap = new HashMap();
aMap.put("A", "a");
FileOutputStream fos = new FileOutputStream(new File("some.txt"));
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.write(aMap);
oos.flush();
oos.close();
我认为我需要关闭fos,但其他人说它很好。 不关闭FileOutputStream是否真的很好,因为我已经关闭了内部OutputStream?
答案 0 :(得分:3)
是的,您无需单独关闭它。如果您关闭oos
,它也会在内部关闭fos
。关闭最外面的流将把它一直委托给
答案 1 :(得分:1)
No
你不需要关闭FileOutputStream。
如果您检查close()
的代码,您会发现它关闭了输出流。
Plz查看文档http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html
答案 2 :(得分:0)
这是Java中的一般规则:如果你有几个链式/嵌套流,请说
outStream3(outStream2(outStream1))
(我只是用伪代码写这个)你
通常只需要关闭最外面的流 - 在这种情况下是outStream3
当您在outStream3
上致电关闭时,它会在outStream2
上拨打关闭
它将在outStream1
上调用close。这条规则有一些例外,但是
这是你能记住的一般规则。
答案 3 :(得分:0)
您不需要明确地执行此操作,它将自动完成。看一下javadoc的例子:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close();
可在此处找到该链接:Class ObjectOutputStream