. NET 4.5 응용 프로그램 에서 로그 파일의 첫 번째 줄과 마지막 줄을 읽어야합니다.
로그 파일에는 모든 행에 타임 스탬프가 있으며 막내 (첫 번째 줄)와 가장 오래된 (마지막 줄) 타임 스탬프를 찾고 싶습니다. 이것은 어려운 작업이 아니지만 그것을 수행하는 영리한 방법이 있는지 궁금합니다.파일의 첫 번째 줄과 마지막 줄을 읽습니다.
string firstLine = File.ReadLines(logFile).Skip(1);
string lastLine = File.ReadLines(logFile).Last();
이 매우 간단한 코드에 대한 개선이있을 수 :
현재 구현은 다음과 같이 (첫 번째 줄은 따라서Skip()
비어 있기 때문에 실제로 로그 파일의 두 번째 줄 필요) 찾습니다 ?
"개선"을 정의합니다. 하비브 (Habib)의 대답은 작은 파일에도 효과적입니다. 매우 큰 파일의 경우 오히려 느려질 것입니다. 그러나 속도를 높이는 일과 관련된 일이 있습니다. 바이너리로 파일의 끝을 읽고 결국 마지막 줄의 시작 부분으로 거슬러 올라갑니다. 정말로 관심이 있으시면 http://stackoverflow.com/a/452945/56778을 참조하십시오. –
건너 뛰기 (1)는 첫 번째 요소 다음에 나머지 요소를 반환 함을 의미합니다. 나는 First()를 언급 한 것 같군요? – Measuring
@JimMischel 실행 시간이 향상되었습니다. 메모리는 가까운 초입니다. 가장 일반적인 경우에 대해 최적화하는 것이 항상 최선이므로 파일의 대다수는 ~ 5MB 이하이고 극단적 인 경우에는 약 25MB (~ 200k 줄)라고 할 수 있습니다. 나는 또한 이들 파일 중 20-30 개를 파싱 할 수있다. 나는 이전에 읽는 것을 뒤에서 보았고,보기가 '다소 까다 롭다'고 동의하고 가능하다면 그것을 피할 것이다. 현재의 해결책은 어느쪽으로도 느리지 않습니다. – valsidalv