我現在正在開發一個允許編輯非常大的文本文件(4Gb +)的類。那麼它可能聽起來有點愚蠢,但我不明白我如何修改流中的文本。 這裏是我的代碼:修改FileStream
public long Replace(String text1, String text2)
{
long replaceCount = 0;
currentFileStream = File.Open(CurrentFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
using (BufferedStream bs = new BufferedStream(currentFileStream))
using (StreamReader sr = new StreamReader(bs))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains(text1))
{
line.Replace(text1, text2);
// Here I should save changed line
replaceCount++;
}
}
}
return replaceCount;
}
對不起混了您的樣本(不寫任何東西)與伊赫桑烏拉」一個(這是使用'StringBuilder'這顯然不會幫助你與大文件)。刪除我的答案。 –
這在一般情況下不起作用。只有在非常不尋常的情況下,更換的時間和原件一樣長。文件不允許在文件中間插入和刪除。因此需要完全重寫該文件。如果你有4個jiggabyte文本文件,那麼你做錯了。 –
@HansPassant,4GB +文件不是操作的結果,但我處理現有的大文件... –