我有一些較大的csv文件(每個1.5gb),我需要替換特定值。我目前使用的方法非常慢,我相當肯定應該有一種方法來加速這一點,但我只是沒有足夠的經驗知道我應該做什麼。這是我的第一篇文章,我試圖找到相關的東西,但沒有遇到任何東西。任何幫助,將不勝感激。VB.Net替換大文本文件中的特定值
我的另一個想法是將文件分解成塊,以便我可以將整個內容讀入內存,執行所有替換,然後輸出到合併文件。我試過這個,但是我做到這一點的方式實際上最終看起來比我目前的方法慢。
謝謝!
Sub Main()
Dim fName As String = "2009.csv"
Dim wrtFile As String = "2009.1.csv"
Dim lRead
Dim lwrite As String
Dim strRead As New System.IO.StreamReader(fName)
Dim strWrite As New System.IO.StreamWriter(wrtFile)
Dim bulkWrite As String
bulkWrite = ""
Do While strRead.Peek <> -1
lRead = Split(strRead.ReadLine(), ",")
If lRead(9) = "5MM+" Then lRead(9) = "5000000"
If lRead(9) = "1MM+" Then lRead(9) = "1000000"
lwrite = ""
For i = LBound(lRead) To UBound(lRead)
lwrite = lwrite & lRead(i) & ","
Next
strWrite.WriteLine(lwrite)
Loop
strRead.Close()
strWrite.Close()
End Sub
在.Net 4中,您可以嘗試[內存映射文件](http://stackoverflow.com/questions/2333075/net-4-0-memory-mapped-files-performance)。這可以顯着提升文件操作的性能 – MarkJ 2011-06-05 21:28:43