gpt4 book ai didi

java - 将一定数量的字节读入 ByteBuffer

转载 作者:行者123 更新时间:2023-12-02 05:09:46 24 4
gpt4 key购买 nike

我有一个 10MB 的二进制文件。我需要以不同大小的 block (例如 300、273 字节)读取它。为了阅读,我使用 FileChannelByteBuffer。现在,对于每次读取迭代,我都会分配我需要读取的新大小的 ByteBuffer 。

是否可以为 ByteBuffer 只分配一次(比如 200 KB)并读取它(300、273 字节等)?我不会一次阅读超过200KB。必须读取整个文件。

更新

public void readFile (FileChannel fc, int amountOfBytesToRead)
{
ByteBuffer bb= ByteBuffer.allocate(amountOfBytesToRead);
fc.read(bb);
bb.flip();
// do something with bytes
bb = null;
}

由于内存限制,我无法一次读取整个文件。这就是为什么我要分块阅读。效率也非常重要(这就是为什么我不想使用当前的方法进行多次分配)。谢谢

最佳答案

声明几个您需要的大小的ByteBuffers并使用分散读取:read(ByteBuffer[] dsts, ...)

或者忘记 NIO 并使用 DataInputStream,readFully()。如果您将 BufferedInputStream 放在下面,您将不会遭受任何性能损失:它甚至可能会更快。

关于java - 将一定数量的字节读入 ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430029/

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