2013-12-03 3 views
3

실제로 이터레이터를 다음 위치로 이동하지 않고도 더 많은 정보를 얻기 위해 다음 줄을 들여다보고 읽을 수있는 기능이 streamreader에 있습니까?readline 그런 다음 포인터를 뒤로 이동 하시겠습니까?

현재 행의 조치가 다음 줄에 달려있다,하지만이 코드 블록 원칙적으로

while((Line = sr.ReadLine())!=null) 
+6

전체 파일을 메모리로 읽어 들이지 않고 거기에서 작업하지 않는 이유가 있습니까? 크기가 엄청나게 큽니까? – Yuck

+1

@Yuck, 맞습니다. 파일이 너무 커서 메모리에로드 할 수 없습니다. – Yang

+1

한 번에 두 줄을 읽음으로써 작동하는 코드는 어떻습니까? 다음 라인이나 그 이상에서만 무엇이 필요한지 알고 싶습니까? – rageit

답변

8

를 사용하는 무결성을 유지하려면, 그런 일을 할 필요가 없습니다. 두 개의 연속 된 선을 관련 시키려면 분석을이 사실에 적용하십시오 (2 번 행을 읽는 동안 1 번 행을 수행하십시오). 샘플 코드 :

using (System.IO.StreamReader sr = new System.IO.StreamReader("path")) 
{ 
    string line = null; 
    string prevLine = null; 
    while ((line = sr.ReadLine()) != null) 
    { 
     if (prevLine != null) 
     { 
      //perform all the actions you wish with the previous line now 
     } 

     prevLine = line; 
    } 
} 

이 필요한만큼 라인 (대신 prevLine 이전 라인의 컬렉션을)를 처리하도록 할 수 있습니다.

+0

감사합니다. 나는 현재 당신의 것과 똑같은 방식을 사용하고있다. (변수 이름조차도 우연히 같은 것이다. :)), 더 좋은 접근 방법이 있는지 궁금하다. – Yang

+2

@Yang (나는 좋은 이름을 선택했다. :)) 뭔가 잘 작동한다면 왜 그것을 바꿀까요? 나는 이런 종류의 접근 방식을 많이 사용해 왔으며 결코 문제가 없었습니다. 그것은 신뢰성 있고 명확하며 빠릅니다. – varocarbas

+1

@Yang 나는 그 두 번째. 나는 이것이 가장 일반적인 접근이라고 추측 할 것이다. 사실, 나는 몇 분 동안'StreamReader' 메소드를 사용하여 합리적인 방법으로 검색하고 유용한 것을 찾을 수 없었다. – evanmcdonnal

관련 문제