【发布时间】:2011-12-01 00:37:25
【问题描述】:
我正在编写一个使用 zlib 流压缩二进制数据的类。我有一个缓冲区,我用输出流填充它,一旦它变满,我使用fopen(filename, 'ab');... 将缓冲区转储到文件中这意味着我的程序只有在缓冲区已满时才打开文件写入它要转储的数据,它会执行并立即关闭它。
问题出在我的格式中,我在每个文件的开头使用了一个 8 字节的标头,其中包含原始长度和压缩长度,但直到整个压缩过程结束时我才知道这些值。
我想做的是写 8 个字节的零,然后附加我所有的压缩数据,然后在清理过程中最后回来用大小数据填充这 8 个字节,但我似乎找不到一种打开文件而不将其全部带回内存的方法。我只想编辑文件的前 8 个字节。我需要使用mmap吗?
【问题讨论】: