저는 스캐너를 사용하여 로그 파일의 행을 읽고 각 행을 구문 분석하여 중요한 것을 찾는 프로그램을 작성했습니다. 로그 파일의 모든 행을 읽는 것이 중요합니다. 각 줄을 스캔하기 위해 다음 코드를 작성했습니다.큰 파일을 읽는 동안 java.util.Scanner가 오작동합니다.
Scanner s = new Scanner(new File("Large.log"));
while(s.hasNextLine())
{
String line = s.nextLine();
//do the processing of the log line
}
위의 코드는 이상한 방식으로 동작합니다. [1 백만 줄 이후] 임의의 수의 줄을 긋고 줄을 읽지 않습니다. 위의 코드를 수정하여 마지막 줄을 확인하고 메모장 ++을 사용하여 로그 파일을 검사했습니다. 해당 줄 다음에 파일에 많은 줄이 남아 있습니다. while
루프가 끝난 후 다른 System.out.println(s.hasNextLine())
을 추가하고 false를 인쇄합니다.
그러나 내가 BufferedReader
을 사용하여 위의 작업을 수행하려고하면 프로그램이 올바르게 작동합니다. Java의 util IO 클래스에 제한이 있습니까?
BufferedReader를 사용하는 경우 readLine() 또는 read()를 사용하고 있습니까? 또한 마지막 줄은 무작위로 고정되거나 고정되어 있거나 파일이나 화면에 대한 인쇄물에 의해 결정되는 "임의의 줄 수"입니까? –
동일한 readLine을 사용했습니다. 마지막 줄은 무작위입니다. 읽히는 선의 수는 무작위였다. –
미안하지만 다른 바보 같은 질문을 읽는 동안 파일에 줄을 추가하는 다른 프로세스가 있습니까? 예를 들어 실제로 읽히는 라인의 난수가 실제로 증가합니까? –