2015-08-28 75 views
1

我發現,有在使用FileStream結合使用BufferedStream是沒有意義的,因爲它有它自己的緩衝策略。然而,我想知道一兩件事:的FileStream和它的緩衝策略

FileStream fsWithBuffer = new FileStream("buf.dat", FileMode.OpenOrCreate, 
       FileAccess.ReadWrite, FileShare.None, 255); 
      fsWithBuffer.WriteByte((byte)4); 
      fsWithBuffer.Dispose(); 

這個代碼寫字節的一部分到指定的文件。在此之前,這個字節保存在內部緩衝區中,所以我明白,如果我沒有調用Dispose()方法,則不會寫入文件。現在

,我的問題是:有時我們不想把所有的數據在一個FileStream的緩衝,讓我們說這是爲了只對小型寫入。是否有可能將一些數據直接放入與FileStream相關的文件中(而不是將其放入內部緩衝區)?

謝謝!

+1

你是問,如果你可以用'FileStream'不帶緩衝?我沒有看到這一點,你仍然需要處理FileStream類。 –

+1

你總是可以調用'Flush',儘管你不會用這種方式繞過緩衝區(而且我沒有看到沒有一個這樣做的想法。 –

+1

好的,我明白了。謝謝:)無論如何,我猜Flush是我在這種情況下尋找的。 –

回答

0

綜上所述這個問題,因爲沒有官方的回答,這裏就是我一直在尋找的是Flush()方法。它節省了實際緩衝區使用FileStream相關的文件,它是我需要:)

3

有可以傳遞給FileStream構造一個標誌枚舉FileOptions.WriteThrough值。它指示文件流直接寫入底層數據存儲,而不進行任何緩衝。

+0

這是一個不錯的選擇,但現在它就像緩衝區是完全不需要的,對吧?我的意思是,現在它不會被使用。 –

+1

是的,在應用此枚舉值的情況下,不存在緩衝區。 –

+0

那麼使用它有什麼意義?我的意思是我可以創建FileStream既不緩衝也不提及FileOption。 –