我在分配时看到了所有类型的基准测试和直接/非直接的bytebuffer解释,但是我没有找到在这些方法上使用内存字节时的差异的简单解释。
有人可以解释一下吗?要说出他们的不同之处并不难。
谢谢!
答案 0 :(得分:1)
readAllBytes将文件的全部内容复制到新的堆上字节数组中,而将文件映射到ByteBuffer则允许访问文件的字节,而无需立即将其全部加载到内存中。您应该期望从映射的字节缓冲区访问字节会产生一些性能开销,但另一方面,您可以映射不适合RAM的大型文件。
答案 1 :(得分:0)
你的问题并没有真正说明你想要什么样的差异,但两者的文档非常简单:
Files.readAllBytes():http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllBytes(java.nio.file.Path)
FileChannel.map: http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html#map(java.nio.channels.FileChannel.MapMode,%20long,%20long)