2010-03-19 3 views
1

FileReader 클래스에 문제가 있습니다.자바 파일 리더에 대한 질문

어떻게 지나가는 줄에 오프셋을 지정합니까? 중지 할 때 어떻게 말합니까? .txt 파일의 각 행을 통과하지만 100-200 행만 입력하고 중지한다고 가정 해 보겠습니다.

어떻게하면됩니까? 지금은 ReadLine()을 사용하고 있지만 오프셋을 지정하는 방법은 없다고 생각합니다.

빠른 도움말은 매우 높이 평가됩니다. 감사.

+1

java.io.FileReader는 내의 readLine() 메소드가 없다. java.io.BufferedReader는 않습니다. BufferedReader라고 생각 하나? –

답변

2

다른 모든 변수를 사용하여 현재 어느 라인에 있는지 계산합니다. 처리하고 싶지 않은 행에 있다면 continue (100 번째 행 앞)과 더 이상 행을 처리하지 않으려면 break (200 번째 행 이후)을 호출하십시오.

+0

물론. 감사. –

3
  1. 수 없습니다. FileReader는 한 번에 한 줄 또는 한 줄씩 문자를 읽습니다. 분명히 당신은 자신의 코드를 확장하거나 그것을 포장하여 불필요한 줄로 건너 뛸 수 있습니다.

  2. 제외 : FileReader 또는 FileWriter를 사용하여주의하십시오. 기본 LOCALE 문자 세트를 사용합니다. 문자 집합을 강제로 사용하려면 OutputStreamWriter 또는 InputStreamReader를 사용하십시오. 예

= 새로운 FileWriter (파일) = 새로운의 OutputStreamWriter (신규의 FileOutputStream (파일) "UTF-8") 승 라이터로 대체 될 수있다 라이터 승; < === 어떻게 문자 집합을 설정할 수 있는지 보자.

  1. 대안 : 고정 폭 텍스트가있는 경우 임의의 위치로 탐색 할 수있는 RandomAccessFile을 확인하십시오. 너비가 고정 된 텍스트 나 줄로 건너 뛸 색인이 없으면이 방법이 도움이되지 않습니다. 그러나 그것은 편리합니다 :)
1

독자가 특정 행을 읽도록 지시하는 방법이 없으므로 카운터를 사용하면됩니다.

try { 
    BufferedReader in = new BufferedReader(new FileReader("infilename")); 
    String str; 
    int lineNumber = 0; 

    while ((str = in.readLine()) != null) { 
     lineNumber++; 

     if (lineNumber >= 100 && lineNumber <= 200) { 
      System.out.println("Line " + lineNumber + ": " + str); 
     } 
    } 

    in.close(); 
} catch (IOException e) { } 
0
BufferedReader in = new BufferedReader(new FileReader("foo.in")); 
for(int i=0;i<100;i++,in.readLine()){} 
String line101 = in.readLine();