我想知道一種方法(當然我想知道最好的方法)編輯一個csv文件,最好不必讀取原始文件並將結果寫入一個新的。VB.Net編輯一個CSV(或分隔文件)
實施例1:我想一列的內容分爲兩列123ABC到123,ABC
實施例2:我想從一列AB123的開頭刪除字母到123
澄清:我不需要幫助來解決我的例子。我只需要指出閱讀和編輯同一文件的正確方向。
下面是一個使用在我看來,一個臨時文件的代碼示例太慢
Dim currentLine as string()
tempFile.AutoFlush = True
Do Until origFile.EndOfData
currentLine = origFile.ReadFields
currentLine(1) = currentLine(1).Replace("ABC","") 'would convert ABC123 to 123
For index as Integer = 0 to currentLine.Count - 2
tempFile.Write(currentLine(index) & ",")
Next
tempFile.Write(currentLine(currentLine.Count - 1))
tempFile.WriteLine()
Loop
tempFile.Flush()
tempFile.Dispose()
origFile.Dispose()
IO.File.Copy(tempFile,OrigFile,True)
IO.File.Delete(tempFile)
或者他可以讀取舊文件到內存中,修改它,然後寫回到相同的文件 – briddums
使用中間臨時文件的優點是,如果出現問題,您不會丟失數據。另外,如果文件太大而無法放入內存,則可逐行讀取以進行處理。 –
謝謝。使用臨時文件似乎太慢了。代碼例如:昏暗currentLine作爲字符串() tempFile.AutoFlush =真 做,直到origFile.EndOfData \t currentLine = origFile.ReadFields \t currentLine(1)= currentLine(1).Replace( 「ABC」, 「」) 「將ABC123轉換爲123 \t對於索引爲整數= 0至currentLine.Count - 2 \t \t tempFile.Write(currentLine(索引) 「」) \t接着 \t \t tempFile.Write(currentLine(currentLine。 Count - 1)) \t \t tempFile.WriteLine() 環 tempFile.Flush() tempFile.Dispose() origFile.Dispose() IO.File.Copy(臨時文件,OrigFile,真) IO.File.Delete(臨時文件)' – donbyte