내 응용 프로그램은 줄 단위로 텍스트 파일을 읽고 파일 끝까지 각 줄의 오프셋을 기록합니다. 그러나 position()은 항상 0을 반환합니다. 내 코드가 잘못되었습니다.FileChannel의 position() 메서드가 항상 0을 반환하는 이유는 무엇입니까?
String buffer;
long offset;
RandomAccessFile raf = new RandomAccessFile("data.txt", "r");
FileChannel channel = raf.getChannel();
BufferedReader br = new BufferedReader(new InputStreamReader(Channels.newInputStream(channel)));
while (true) {
offset = channel.position(); // offset is always 0. why?
if ((buffer = br.readLine()) == null) // buffer has correct value.
return;
………………………………
}
'InputStream'을 원한다면 직접'FileInputStream'을 사용하지 않을까요? 적어도'FileChannel'을 가져 와서'InputStream'으로 래핑하는 것보다 잠재적으로 더 효율적입니다. –