2008-09-24 74 views

回答

34

System.IO.File.WriteAllBytes(path, data)應該沒問題。

+2

+1爲一個全面的例子 - thx。 – barrypicker 2014-09-15 23:10:09

3

我有一個類似的問題展開反傾銷調查300 MB字節數組到磁盤文件...
我用的StreamWriter,我花了一個很好的30分鐘到轉儲文件。
使用FilePut花了我3到4分鐘,當我用BinaryWriter時,文件在50-60秒內被轉儲。
如果您使用BinaryWriter,您將獲得更好的性能。

1

實際上,最有效的方式是流式傳輸數據並在收到數據時進行寫入。 WCF支持流媒體,因此這可能是您想要查看的內容。如果你用大文件做這件事,這一點尤其重要,因爲你幾乎肯定不希望服務器和客戶端上的內存中的文件內容。

+0

這是一個沒人提及的重要細節,但是正如你指出W​​riteAllBytes並不是Memory的最有效方式,因爲它消耗了大量的內存。在可能的情況下儘快寫入它肯定會更好,我甚至可以通過使用帶有較小緩衝區的StreamWriter進行更好的分配。 – ForceMagic 2017-07-11 13:07:24

7

而且WriteAllBytes只是執行

using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) 
{ 
    stream.Write(bytes, 0, bytes.Length); 
} 

的BinaryWriter具有誤導性的名稱,它是用來編寫元爲一個字節表示,而不是寫二進制數據。它的所有Write(byte [])方法都會對其使用的流(在本例中爲FileStream)執行Write()。

相關問題