簡體   English   中英

如果我關閉ObjectOuputStream,那么是否不需要關閉FileOutputStream?

[英]If I close ObjectOuputStream, then do not need to close FileOutputStream?

我的代碼如下。

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,但是其他人說很好。 因為我已經關閉了內部OutputStream,所以不關閉FileOutputStream真的好嗎?

是的,您不需要單獨關閉它。 如果您關閉oos ,它也會在內部同時關閉fos 關閉最外面的流將一直將其委派

No您不需要關閉FileOutputStream。 如果檢查close()的代碼,您會發現它關閉了輸出流。

請參閱文檔http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html

這是Java中的一般規則:如果您有多個鏈接/嵌套的流,請說
outStream3(outStream2(outStream1)) (我只是用偽代碼編寫)
通常只需要關閉最外面的流-在這種情況下,即outStream3
在內部,當您在outStream3上調用close時,它將在outStream2上調用close
這將在outStream1上調用close。 此規則有一些例外,但是
這是您可以記住的一般規則。

您無需明確地執行此操作,它將自動完成。 看一下javadoc中的示例:

FileOutputStream fos = new FileOutputStream("t.tmp");
  ObjectOutputStream oos = new ObjectOutputStream(fos);

  oos.writeInt(12345);
  oos.writeObject("Today");
  oos.writeObject(new Date());

  oos.close();

鏈接可以在這里找到: 類ObjectOutputStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM