매우 큰 파일 (각 줄마다 하나씩 길이가 변함)을 파싱 중이며 파일에서 읽은 바이트 수를 추적하여 이벤트에서 복구 할 수 있습니다. 실패의.TextReader.ReadLine()에서 읽은 바이트 수는 어떻게 계산합니까?
using (TextReader myTextReader = CreateTextReader())
{
string record = myTextReader.ReadLine();
bytesRead += record.Length;
ParseRecord(record);
}
그러나이 ReadLine()
스트립 라인의 모든 CR/LF 문자 때문에 작동하지 않습니다
bytesRead
에 1을 더할 수 없습니다.
실제 줄 길이를 쉽게 얻을 수있는 방법이 있습니까? Read()
작업과 관련하여 직접 ReadLine()
메서드를 작성합니까?
기본 스트림이 검색을 지원하는 경우에만 작동하며 이는 사용자의 경우에 효과적 일 수 있지만 모든 경우에이 방법이 작동하지 않는다는 점을 지적해야합니다. –
BaseStream이 청크로 진행되는 곳에서 StreamReader가 버퍼링되는 경우에도 문제가있을 수 있습니다. – sisve
성능상의 이유로 TextReader는 기본 스트림을 바이트 단위가 아닌 4096 바이트 단위로 읽으 므로이 방법은 확실히 작동하지 않습니다. 이것은 실제로 시몬이 말한 것과 동일합니다. –