gpt4 book ai didi

Java 使用 FileChannel 从文件读取

转载 作者:行者123 更新时间:2023-12-01 23:55:56 27 4
gpt4 key购买 nike

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

最佳答案

通常,flip() 在读取缓冲区数据之前调用。 rewind() 方法执行以下操作:

public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}

它不像 Flip() 那样设置“限制”:

public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}

因此,在阅读之前,请使用 Flip() 而不是 rewind() 取一个托盘。

关于Java 使用 FileChannel 从文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com