Java는 독자의 사본을 만듭니다
-
20-09-2019 - |
문제
파일을 통해 버퍼링 리더가 루핑되어 있습니다. 특정 사례를 쳤을 때 독자의 다른 인스턴스를 사용하여 계속 반복하지만이 시점에서 시작합니다.
권장 솔루션에 대한 아이디어가 있습니까? 별도의 판독기를 만들고 마크 함수를 사용 하시겠습니까?
해결책
내 의견에 대한 귀하의 대답을 기다리는 동안, 나는 가정에 갇혀 있습니다.
그것이 당신이 가치가 당신이 가치가 있다면, 당신은 내가 그것을 발견하는 것만 큼 즐겁게 놀랐을 것입니다. RandomAccessFile
이제 (1.4 또는 1.5 이후)를 지원합니다 readLine
방법. 물론 RandomAccessFile은 위치에 대한 세밀한 제어를 제공합니다.
버퍼링 된 IO를 원한다면 독자를 주위에 포장하는 것을 고려할 수 있습니다. CharacterBuffer
아니면 아마도 ByteBuffer
맵핑 된 파일 주위에 nio
API. 이를 통해 파일을 메모리로 처리하고 읽기 포인터를 잘 제어 할 수 있습니다. 데이터가 모두 메모리에 있기 때문에 버퍼링은 무료로 포함됩니다.
다른 팁
지금까지 읽은 캐릭터 수를 추적하면 새 버퍼드 리더를 만들고 사용할 수 있습니다. 건너 뛰기.
Noel이 지적했듯이 사용을 피해야합니다. BufferedReader.readLine()
, 부터 readLine()
최신 라인을 폐기하고 캐릭터가 부정확하게 계산됩니다. 다른 사람이 코드를 유지해야한다면 Readline ()에 의존해서는 안됩니다.
사용하기로 결정한 경우 skip
, 당신은 당신에게 버퍼링 된 독자를 작성하여 최신 라인을 계산하는 오프셋을 제공해야합니다.