java - 内存映射输出流产生一个带有尾随零的输出文件

  显示原文与译文双语对照的内容
0 0

我正在使用 java.nio 包在Java中实现内存映射流。 它将一块内存映射到输出文件,当需要将它的他元素写入输出文件时,它将映射到。


w_buffer = channel.map(FileChannel.MapMode.READ_WRITE, w_cycle*bufferSize, bufferSize);

当要写入文件的总元素量是映射到文件的块的大小的倍数时,实现顺利工作。 但是,当-this不能决定/知道用户将在映射区域中停止writing-的时候,它们不会经常发生。 我应该如何避免输出文件中的这些尾随零?

先谢谢了。

时间: 原作者:

0 0

你可以使用 channel.truncate(size), 将通道截断到给定的大小,但是这是否可以与 channel.map() 结合使用。 很多 channel.map 都依赖于底层操作系统。 通常将"文件访问"和"内存映射访问"混合在同一文件中不是一个好主意。 其他解决方案是在每个块的开头都有一个"使用的大小"值。

原作者:
...