2012-07-23 2 views
0

정말 큰 파일로 작업하고 있습니다. 나는 기가 바이트 큰 얘기.특정 위치에서 문자열 줄을 읽는 방법

텍스트 파일이 지속적으로 업데이트되기 때문에 특정 인덱스에서 한 줄을 읽을 수 있어야합니다. 이것을 달성하기위한 가장 빠른 해결책은 무엇입니까? 나는 공간 요구에 전혀 제약받지 않는다.

편집 : 자세한 정보를 게시했습니다. 읽어야하는 다음 텍스트가 있다고 가정 해 보겠습니다.

Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [RX] 04 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:54 ez-x5 user.debug if_comm: [RX] 02 30 40 0f 30 32 31 23 64 31 30 32 30 64 64 49 49 49 49 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 03 0b 

이 텍스트 파일은 Google 로거에서 일관되게 업데이트됩니다. 텍스트 파일이 업데이트되면, 로그에 추가 된 내용의 새 행 (\ n으로 구분됨)을 읽어야합니다.

+0

"a line"이란 무엇입니까? 어떤 라인? 순서의 다음? 줄 번호로? 또한, 귀하의 "특정 색인"은 무엇입니까? – Cameron

답변

1

FileStream 개체를 사용하면 Position 속성을 변경하여 파일에서 임의 액세스를 얻을 수 있습니다.

here을 참조하십시오.

위치를 설정하면 스트림에서 위치를 탐색하므로 파일에서 찾고자하는 위치를 미리 알아야합니다.

0

lineCounter variale를 사용하고 StreamReader.ReadLine()을 읽을 때 증가시킵니다. 특정 색인 (예 : lineCounter==SpecificIndex)에 도달하면 읽기를 중지하십시오.

+0

어떻게? 텍스트 파일이 업데이트되면 새 줄을 읽어야합니다. 내가 아는 한 파일을 다시 읽으려면 인덱스 0에서 다시 읽어야합니다. – l46kok

+0

텍스트 파일이 * small *이지만이 경우 (대용량 텍스트 파일) * counter *를 사용하면 (필자가 생각하기에)'File.ReadAllLines'을 제안합니다. – adatapost

0

MemoryMappedFile을 사용하면 파일의 일부를 메모리에 매핑 할 수 있으므로 전체 파일을 읽을 수 없습니다. 이것을 FileSystemWatcher과 결합하면 작업하기에 좋은 솔루션을 얻을 수 있습니다.

관련 문제