2014-12-19 3 views
0

내가 무엇을하고 싶은지, 내가 을 사용하여 파일의 끝에 도달했을 때 readLine()을 사용하는 파일에서 라인을 읽었을 때 같은 bufferedReader 개체를 사용하여 beginnig에서 행을 읽으려고합니다. 예를 들어 같은 파일. 이전에 초기화 된`bufferedReader`를 스트림의 beginnig로 리셋하는 방법이 있습니까?

내가,이 문제가 달성하려고 제가 mark()reset() 사용의 bufferedReader를 초기화하는 후 나는 bufferReaderobject.mark(0)을 설정하고 나는 전체 파일을 읽고 그 후 나는 bufferReaderobject.reset() 사용하여 전체 파일을 읽을 agian 그러나 예외가 발생했다 . reset()은 파일 끝에 도달하지 않은 경우에만 유효합니다.

이전에 초기화 된 bufferedReader을 스트림의 시작 부분으로 재설정하는 방법이 있습니까?

답변

2

이러한 방식으로 reset()을 사용할 수 있으려면 전체 파일이 BufferedReader의 버퍼에 맞아야합니다.

즉, 충분히 큰 버퍼로 BufferedReader을 만들거나 파일을 다시 읽을 때 새 인스턴스를 만들어야합니다.

2

이 시도 :

FileInputStream fIn = ...; 
BufferedReader bRead = new BufferedReader(new InputStreamReader(fIn)); 

// "reset" to beginning of file (discard old buffered reader) 
fIn.getChannel().position(0); 
bRead = new BufferedReader(new InputStreamReader(fIn)); 
0

mark method에 대한의 BufferedReader의 문서는 매개 변수 readAheadLimit를 호출하고 상태 그

실패 할 수 있습니다 이상이 한계까지 문자를 읽거나 후 스트림을 재설정 시도 .

그래서 마크는 앞으로 만 작동하며 시작으로 재설정하기 위해 작동하지 않는 것 같습니다.

question도 참조하십시오.