大家都知道truncate(file, size)
函数,通过截断文件尾部将文件大小更改为给定大小。但是如何做同样的事情,只截断文件的尾部和头部呢?
通常,您必须重写整个文件。最简单的方法是跳过前几个字节,将其他所有内容复制到临时文件中,并在完成后在旧文件之上重命名临时文件。更复杂的方法是就地重写它,类似于memmove
可以使用 read/seek/write/seek 或 pread/pwrite 进行工作,然后在完成后截断最后一位。
如果您使用的是最新版本的 Linux (>= 3.15),并且您有受支持的文件系统(当前为 ext4 或 xfs),并且您希望删除的数量恰好是文件系统块大小的倍数,则可以使用非便携式fallocate(2) http://man7.org/linux/man-pages/man2/fallocate.2.html与FALLOC_FL_COLLAPSE_RANGE
旗帜。请注意,便携式设备不支持此功能posix_fallocate
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)