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()