大きなファイルから読み取ると、このコードから奇妙な出力が得られます。ファイルはwhileループを使用して99,999桁に印刷されましたが、ファイルを読み取って内容を印刷すると、99,988行しか出力されません。また、ファイルを読み戻すための唯一のオプションはByteBufferを使用していますか?CharBufferを使用している他のコードを見たことがありますが、どのコードを使用すべきか、どのような場合に使用すべきかわかりません。注:filePathは、ディスク上のファイルを指すPathオブジェクトです。
private void byteChannelTrial() throws Exception {
try (FileChannel channel = (FileChannel) Files.newByteChannel(filePath, READ)) {
ByteBuffer buffer = ByteBuffer.allocate(1024);
String encoding = System.getProperty("file.encoding");
while (channel.read(buffer) != -1) {
buffer.rewind();
System.out.print(Charset.forName(encoding).decode(buffer));
buffer.clear();
}
}