从大文件中读取时,我从这段代码中得到了一些奇怪的输出,文件是使用 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();
}
}