我使用_FileStream.Write(_ByteArray, 0, _ByteArray.Length);
將文件寫入一個字節陣列。我注意到這很慢。 我從文本文件讀取一行,將其轉換爲bytearray,然後需要將其寫入新的(大於500 Mb)文件。請提供一些建議以加快寫入過程。將文件快速寫入文件
回答
FileStream.Write
基本上就是這樣。這是可能使用BufferedStream
會有所幫助,但不太可能。
如果你是確實讀取一行文本,當編碼時,它是500MB,然後我不會驚訝地發現大部分時間都花費在執行編碼上。你應該能夠通過編碼來測試,然後扔掉結果。
假設「編碼」你表演只是Encoding.GetBytes(string)
,則可能需要使用StreamWriter
包住FileStream
嘗試 - 它可以像重複編碼同一數組寫入文件之前,更好地工作,通過技巧。
如果你實際上每次讀一本線和追加,要的文件,然後:
顯然,這是最好的,如果你在整個操作過程都保持輸入流和輸出流開。不要反覆閱讀,然後寫。
你可能使用多線程或可能異步IO獲得更好的性能。這部分取決於你是否正在讀寫同一個驅動器。
使用
StreamWriter
可能仍然是一個好主意。
此外創建文件時,您可能想看看使用它接受FileOptions
構造。試用可用的選項,但我懷疑你會想要SequentialScan
和可能WriteThrough
。
文本文件中的每一行都包含一個純文本值(32個字符)。我一次只讀一行,使用Encoding.GetBytes(string)將每個值轉換爲一個字節數組,然後將字節寫入新文件(導入另一個應用程序)。爲這兩個文件打開關閉一次。如果我使用StreamWriter寫成「文本」,它會更快。 –
_FileStream = new FileStream(fileName,FileMode.Append,FileAccess.Write); –
@Robertico:對 - 在這種情況下,我建議你使用StreamWriter :)爲什麼你不*使用StreamWriter,因爲它爲你編碼? –
如果你只寫了字節數組,你試過用BinaryWriter的Write方法嗎?批量寫作也可能有助於提高速度。也許你可以閱讀每一行,將字符串轉換爲字節,將這些字節存儲爲將來的寫入操作(即在List中或某事中),並且每隔一段時間(在讀取x行後)將大塊寫入磁盤。
BinaryWriter:http://msdn.microsoft.com/en-us/library/ms143302.aspx
- 1. Python快速讀取和寫入文件
- 2. 將字節數組寫入文件的快速方法
- 3. 將SQL服務器表寫入文件的快速方法
- 4. Mahout:(快速性能)如何將首選項寫入文件?
- 5. 快速讀/寫xlsx文件到/從R
- 6. 將結構數組寫入文本文件的快速高效的方法
- 7. 將文件寫入
- 8. 將文字寫入文件?
- 9. 快速導入CSV文件到Postgre
- 10. 快速跨平臺算法讀取/寫入文件在C + +
- 11. http請求後快速寫入日誌文件
- 12. 在Android中快速寫入大量數據文件
- 13. 在線文件存儲,支持webdav快速讀取和寫入
- 14. 如何快速寫入大量數據轉化爲txt文件
- 15. 快速讀取和寫入數據到文件
- 16. ASP.NET - 將文件寫入文件共享
- 17. WriteFile將文件名寫入文件
- 18. 如何將文件寫入文件?
- 19. 難以將文件寫入文件
- 20. 將文件路徑寫入.txt文件
- 21. Image Magick將文件寫入文件夾
- 22. 將文件寫入文件的錯誤
- 23. jquery快速讀取文件
- 24. 快速文件讀取
- 25. 快速評估文件
- 26. 快速複製tmp文件
- 27. 如何快速將所有Jade文件轉換爲Pug文件?
- 28. 如何快速將文件保存到文件上?
- 29. 提高寫入文件的速度
- 30. 如何將二進制數據寫入文件以便快速讀取?
Define slow?讀取和寫入單獨的磁盤,使用SSD。 –
我建議稍微詳細一點。它在哪裏慢 - 寫入文件,轉換爲bytearray,或者你不知道,因爲你沒有分開這些。我建議你放一點代碼。 – iandotkelly
所以......你一次只讀一行,將其轉換爲一個字節數組,然後將這些字節寫入另一個文件?你在做什麼與OS文件複製操作不同? – Cameron