非常簡單的場景。我有一個Web服務接收一個字節數組,該字節數組將被保存爲磁盤上的特定文件類型。什麼是在C#中最有效的方法?在C#中,將字節數組保存爲磁盤上的文件的最有效方法是什麼?
回答
System.IO.File.WriteAllBytes(path, data)
應該沒問題。
不確定在這種情況下「高效」是什麼意思,但我會用System.IO.File.WriteAllBytes(string path, byte[] bytes) - 在LOC方面肯定有效。
也許System.IO.BinaryWriter和BinaryReader類會有所幫助。
http://msdn.microsoft.com/en-us/library/system.io.binarywriter.aspx
「以二進制流寫入原始類型,並支持在一個特定的編碼寫入字符串」。
http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx
「讀取原始數據類型爲在特定的編碼的二進制值。」
有源代碼的任何真實示例? – Kiquenet 2010-12-29 16:08:14
我有一個類似的問題展開反傾銷調查300 MB字節數組到磁盤文件...
我用的StreamWriter,我花了一個很好的30分鐘到轉儲文件。
使用FilePut花了我3到4分鐘,當我用BinaryWriter時,文件在50-60秒內被轉儲。
如果您使用BinaryWriter,您將獲得更好的性能。
實際上,最有效的方式是流式傳輸數據並在收到數據時進行寫入。 WCF支持流媒體,因此這可能是您想要查看的內容。如果你用大文件做這件事,這一點尤其重要,因爲你幾乎肯定不希望服務器和客戶端上的內存中的文件內容。
這是一個沒人提及的重要細節,但是正如你指出WriteAllBytes並不是Memory的最有效方式,因爲它消耗了大量的內存。在可能的情況下儘快寫入它肯定會更好,我甚至可以通過使用帶有較小緩衝區的StreamWriter進行更好的分配。 – ForceMagic 2017-07-11 13:07:24
而且WriteAllBytes只是執行
using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
{
stream.Write(bytes, 0, bytes.Length);
}
的BinaryWriter具有誤導性的名稱,它是用來編寫元爲一個字節表示,而不是寫二進制數據。它的所有Write(byte [])方法都會對其使用的流(在本例中爲FileStream)執行Write()。
- 1. 在PHP中將數組保存到磁盤的最快方法是什麼?
- 2. 在C中合併字節數組的最有效方法是什麼?
- 3. 如何使用C#中的SaveFileDialog將字節數組保存爲磁盤上的png文件?
- 4. 使用C#在磁盤上查找所有exe文件的最有效方法?
- 5. PHP將png文件保存爲0字節到磁盤
- 6. 在磁盤上存儲Python字典的有效方法?
- 7. 在Java中將對象存儲在磁盤上的最佳方式是什麼?
- 8. 使用python處理大量磁盤數據的最有效方法是什麼?
- 9. 將數據寫入文件的最有效方法是什麼?
- 10. 將PDF文件保存在磁盤中
- 11. 將文件保存在磁盤中
- 12. 將io.ReadCloser轉換爲字節數組的最有效方法
- 13. c - 將char *數組轉換爲int和float的最有效方法是什麼?
- 14. 在Linux上將文件寫入磁盤的最快方法
- 15. 將C++結構體編組爲C#的最有效方法是什麼?
- 16. Python:如何有效地將2d numpy數組保存到磁盤?
- 17. 什麼是在Javascript中反轉數組的最有效方法?
- 18. 在Java中輸入數組的最有效方法是什麼?
- 19. 有什麼方法可以在Visual Studio 2012中將對象保存到磁盤?
- 20. 爲什麼內存沒有在C#在磁盤上寫入文件後釋放
- 21. 爲什麼文件中的數組的二進制保存有效? [C++]
- 22. Carrierwave不保存磁盤上的文件
- 23. 在磁盤上保存文件
- 24. 在C++中讀取文件最後一行的最有效方法是什麼?
- 25. 什麼是在MySQL列中存儲整數數組的最有效方法?
- 26. 什麼是可以存儲在使用inode和磁盤塊的磁盤上的最大文件大小
- 27. 將上傳的文件保存在磁盤上,ubuntu路徑
- 28. 爲什麼Redis Hash Bucket保存磁盤?
- 29. 將數據保存到文件的最佳方式是什麼?
- 30. 將字節數組轉換爲文件而不將文件寫入磁盤
+1爲一個全面的例子 - thx。 – barrypicker 2014-09-15 23:10:09