fstream从二进制文件的末尾删除n个字节

fstream delete N bytes from the end of a binary file

本文关键字:删除 字节 二进制文件 fstream      更新时间:2023-10-16

是否可以使用fstream(或类似的内容)从C 中的二进制文件的末尾删除n个字节?我不想阅读整个文件,将其剪切并再次写入,但是由于从文件的末尾开始,似乎应该不是一个问题。

我不知道无需编写新文件即可执行此操作的通用C (平台独立)。但是,在POSIX系统(Linux等)上,您可以使用ftruncate()函数。在Windows上,您可以使用SetEndOfFile()

这也意味着您需要使用本机函数而不是fstream打开文件,因为您需要这些功能的本机描述符/句柄。

编辑:如果您能够使用boost库,则它在其文件系统库中具有resize_file()函数,该功能将执行您想要的操作。

更新:

现在在C 17中您可以使用文件系统中的resize_file

生活在coliru

如果您要使用QT,QFile还提供了两个resize()方法,允许截断文件。