gpt4 book ai didi

java - 如何使用 ReadableByteChannel 获取文件内容并将其存储在 byteBuffer 中?

转载 作者:行者123 更新时间:2023-12-04 15:50:49 26 4
gpt4 key购买 nike

下面是我写的代码。我想做简单的事情,将二进制文件数据存储到 byteBuffer 中。

File file = new File(fileName);
try {
ReadableByteChannel channel = new FileInputStream(fileName).getChannel();
ByteBuffer buf = ByteBuffer.allocateDirect(file.length());

// How can use buf.read to get all the contents?

} catch (Exception e){

}

我在想

  1. 如何使用read 从 channel 中获取所有数据并将其存储在 ByteBuffer 中
  2. 除了使用 File 对象来获取文件的长度之外,如果有更优雅的分配 ByteBuffer 的方法

最佳答案

我更喜欢使用内存映射。

FileChannel channel = new FileInputStream(fileName).getChannel();
ByteBuffer buf = channel.map(MapMode.READ_ONLY,0,channel.size());

如果文件大于 2 GB,则必须有多个映射。从好的方面来说,无论大小如何,这都需要大约 10 毫秒,并且无论文件大小如何,都不会使用太多堆内存或直接内存。

关于java - 如何使用 ReadableByteChannel 获取文件内容并将其存储在 byteBuffer 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353238/

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