fstream - 收缩文件
fstream - shrinking file
如何用fstream把文件末尾多余的space删掉?
我有一个大约 250mb 的二进制文件,经过某些操作后,我在文件中留下了大约 100mb 的数据(在开头)。然而,该文件仍然是 250mb。如何释放磁盘 space?
大量相同的结构按顺序写入文件:
fstream::write((char *)data_struct,sizeof(data_struct));
有时不再需要文件末尾的结构。
文件流不支持截断,除非在打开时截断。您需要关闭它,然后使用 OS 特定方法来设置精确长度。对于 Windows 和 Linux 即:
Windows: SetEndOfFile()
Linux: truncate()/ftruncate()
如何用fstream把文件末尾多余的space删掉? 我有一个大约 250mb 的二进制文件,经过某些操作后,我在文件中留下了大约 100mb 的数据(在开头)。然而,该文件仍然是 250mb。如何释放磁盘 space?
大量相同的结构按顺序写入文件:
fstream::write((char *)data_struct,sizeof(data_struct));
有时不再需要文件末尾的结构。
文件流不支持截断,除非在打开时截断。您需要关闭它,然后使用 OS 特定方法来设置精确长度。对于 Windows 和 Linux 即:
Windows: SetEndOfFile()
Linux: truncate()/ftruncate()