매우 큰 텍스트 파일 (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'을 사용 에산 Ullah '한 (과 샘플 (즉, 전혀 아무것도 기록하지 않습니다) 혼합). 내 대답을 삭제합니다. –
일반적인 경우에는 작동하지 않습니다. 매우 예외적 인 경우에만 대체품이 원본과 정확히 일치 할 때만 가능합니다. 파일은 파일의 중간에 삽입 및 삭제를 허용하지 않습니다. 따라서 파일을 완전히 다시 작성해야합니다. 4GB의 텍스트 파일을 가지고 있다면 잘못 처리하고있는 것입니다. –
@HansPassant, 4GB + 파일은 작업 결과가 아니지만 기존의 큰 파일을 처리했습니다 ... –