我想修改以下代碼以處理大文件。如何修改SearchAndReplace例程以處理大文件
public static void Replace(string filePath, string searchText, string replaceText)
{
StreamReader reader = new StreamReader(filePath);
string content = reader.ReadToEnd();
reader.Close();
content = Regex.Replace(content, searchText, replaceText);
StreamWriter writer = new StreamWriter(filePath);
writer.Write(content);
writer.Close();
}
我在想,我會需要打開一個文件流寫入到一個新的文件名,然後刪除原始文件,並用新的替換它,當我完成了。那個聽起來是對的嗎?
另外... 我喜歡這個例程的簡單性,除了必要的文件I/O代碼行之外,只有一行代碼來處理文件。然而,我也想知道如果我爲了簡單而犧牲性能......是Regex.Replace非常高性能?
是不是ReadAllText去讀整個文件到內存做沒有正則表達式?這個問題的主要部分是關於修改這個以處理大文件,因爲我得到一個內存異常,試圖一次加載整個文件。 – 2012-07-26 06:15:48
@BrandonMoore:我也建議'正則表達式與流' – Ria 2012-07-26 06:19:31