2012-09-27 2 views
4

로거 코드에서 로그 파일을 읽는 데 FileInputStream을 사용하고 있습니다. 마지막으로 로그 파일 'byteOffset'에서 읽은 파일의 바이트 수가 저장됩니다. 독자가 로그를 읽어야 할 때마다 FileInputStream.skip(byteOffset)을 읽고 거기에서 읽습니다. 이 문맥에서 나는 InputStream.skip() 문서에서 아래 진술을 발견했습니다.InputStream.skip()은 예상보다 작은 바이트를 스킵합니까?

이 입력 스트림에서 n 바이트의 데이터를 건너 뛰고 버립니다. 건너 뛰기 방법은 여러 가지 이유로 인해 바이트보다 작은 바이트 (가능한 경우 0)을 건너 뜁니다. 이는 개의 조건 중 하나 일 수 있습니다. n 바이트가 건너 뛰기 전에 파일 끝에 도달하면 은 한 가지 가능성이 있습니다.

설명서에서 언급 한 것 외에 다른 이유로 인해 건너 뛴 실제 데이터는 입력과 다릅니다. 난 단지 내 모든 로그 리더 코드에서 준비해야 할 모든 사례를 확인하고 싶다.

답변

2

구현에 따라 다릅니다. 어쩌면 버퍼링 된 스트림 일 수 있으며 백업 스트림에서 100 바이트 만 읽을 수 있으며 더 많은 바이트를 검색하는 데 더 많은 시간이 소요됩니다.

는 (나는이 InputStream 사양에 그 부분을 넣어 좋은 결정이었다 생각하지 않지만, 지금은 변경 불가능합니다.)

+1

나는 FileInputStream.skip를 (사용하는 경우) 난 아직도해야 메서드의 출력 값이 입력보다 작을 까봐 걱정이됩니다 (파일 끝이 input 'n'바이트보다 앞에 도달하는 경우 제외)? – vk239

+1

예. 명세가 가능하다면 그 가능성을 무시해서는 안됩니다. –

관련 문제