繁体   English   中英

将一定数量的字节读入ByteBuffer

[英]Reading certain number of bytes into ByteBuffer

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

是否只能为ByteBuffer分配一次(比如说200 KB)并读入其中(300,273字节等)? 我一次不会读超过200KB。 必须读取整个文件。

UPD

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放在下面,则不会损失任何性能:它甚至可能更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM