2014-03-26 1 views
0

나는 과거에 한 일에 대해 질문을했지만, 사용하는 것이 가장 효율적인 방법이라고 생각하지 않았습니다.여러 줄 텍스트 파일의 개별 줄을 파싱 하시겠습니까?

...의 내가 각 라인은 중요한 일이 포함 된 텍스트 파일을 가지고 말과의 다음 각 고유 환경에 대응하여, 나는이 라인의 여러 세트를 가지고 있다고 가정 해 봅시다 그래서 예를 들면 :

1 
String that I need to parse for specific tokens.. 
2 
String that I need to parse for specific tokens.. 
String that I need to parse for specific tokens.. 
3 
String that I need to parse for specific tokens.. 
String that I need to parse for specific tokens.. 
String that I need to parse for specific tokens.. 

그래서 위의 입력 파일을 제공,이 다음과 유사한 것이 해결의 나의 과거 방식 (반 의사!) :

BufferedReader inputFile = new BufferedReader(new FileReader("file.txt")); 
while(inputFile.hasNextLine()) 
{  
    Scanner line = new Scanner(inputFile.nextLine()); 
    //parse the line looking for tokens 

} 

inputFile.close(); 

이 나의 문제는 그것을위한 새로운 스캐너 개체를 만드는 데 매우 비효율적 인 것입니다 내 BufferedReader에있는 모든 행.

이 기능을 구현하는 더 좋은 방법이 있습니까?

하나의 제안은 토큰으로 전체 문서를 스캔하는 것이지만 그 문제점은 내가 얼마나 많은 문자열이 하위 집합 (정수로 표시되는지)을 추적 할 수 없다는 것입니다. 또는 나는 적어도 내가 새로운 라인을 볼 때마다 카운터를 감소시키는 것 이외의 다른 해결책을 생각할 수 없다.

미리 감사드립니다.

+0

Java에서 '스캐너'를 사용하지 않는 문자열을 분석하는 방법은 다양합니다. 나는 인터넷 검색이나 검색 결과가 하나도 나오지 않았다는 것에 충격을 받았다. –

+0

@BrianRoach 나도 그 이유를 물었다. – user2019260

답변

0

이것으로 확인하십시오.

public static void main(String[] args) throws IOException { 

     BufferedReader bf = new BufferedReader(new FileReader(new File("d:/sample.txt"))); 
     LineNumberReader lr = new LineNumberReader(bf); 
     String line = "";    
     while ((line = lr.readLine()) != null) { 
      System.out.println("Line Number " + lr.getLineNumber() + 
        ": " + line);     
     } 
    } 
관련 문제