Java:将二进制文件 blob 保存在内存中以供多次使用(byte[]?ByteBuffer?...?)

Java: Keep binary file blob in memory for multiple uses (byte[]? ByteBuffer? ...?)

我从 InputStream 读取二进制文件,必须将它们保存在内存中以供进一步处理。最明显的做法是将每个文件的读取数据保存在一个 byte[] 数组中。但我想有更优雅的方法可以在内存中 "file blobs" 周围提供一些 OO API 。你会推荐什么?

如果所有内容都适合内存并且数据很快被丢弃,请使用 byte[]s 或非直接 (!) java.nio.ByteBuffers(无论如何它们只是字节数组的包装器)。字节缓冲区的优点是您可以使用 asReadOnlyBuffer() 方法提供对同一 blob 的引用,通过它不能对 blob 进行任何更改。使用 byte[],这需要一个防御性副本。关于 ByteBuffer 的额外开销:Hotspot 编译器非常善于消除它,而且你的 blob 似乎相当大,所以额外分配应该无关紧要。