簡體   English   中英

Java中ObjectOutputStream類中的drain()vs flush()

[英]drain() vs flush() in ObjectOutputStream Class in Java

當我看到如下有關這兩種方法的描述時,我對此感到有些困惑。

protected void drain() :類似於沖洗,但是不會將沖洗傳播到基礎流。

void flush() :寫入所有緩沖的輸出字節並刷新到基礎流。

例如:

FileOutputStream out = new FileOutputStream("test.txt");   

ObjectOutputStream oout = new ObjectOutputStream(out);

問題1:
如果我調用oout.flush() ,它將強制將ObjectOutputStream中的輸出數據寫入基礎FileOutputStream中,但不能保證隨后將這些數據從FileOutputStream中寫入文件“ test.txt”中。磁盤,因為我不調用out.flush() ,這是正確的嗎?

問題2:
如果我叫oout.drain()怎么辦?

  • 將執行什么處決?

刷新會將數據寫入test.txt。 但是,排出類似於沖洗,但不會將沖洗傳播到基礎流。

問題1:

如果我調用oout.flush(),它將強制將ObjectOutputStream的輸出數據寫入基礎FileOutputStream,但不能保證隨后將這些數據從FileOutputStream寫入文件“ test.txt”中磁盤,因為我不調用out.flush() ,對嗎?

不,你錯了。 確實刷新FileOutputStream 但是,由於FileOutputStream不緩沖或刷新,因此在這種情況下, drain()flush()之間實際上沒有區別。 如果FileOutputStream周圍有一個BufferedOutputStream ,那將會有所不同。

問題2:

如果我叫oout.drain()怎么辦? 將執行什么處決?

它將完全按照Javadoc中的說明刷新ObjectOutputStream但不刷新基礎流。

您已經設法使它完全回到了前面。 我不明白該怎么做:Javadoc非常清晰。 此外,由於drain() protected因此無論如何都與您無關。

暫無
暫無

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

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