我们可以减少现有文件的大小吗?

Can we reduce size of existing file?

我想知道是否可以在不创建临时文件的情况下减少文本或二进制文件的大小。这样我们就可以删除文件末尾的数据。

如果是那么如何。如果不是那么为什么。

是的,您可以使用 POSIX 系统上可用的 truncate()ftruncate() 功能减小文件大小。

对于 Windows,使用 SetFilePointer 将当前位置设置为所需的文件大小,然后调用 SetEndOfFile 实际截断它。

您可以使用 C++17 标准库 <filesystem> 中的 resize_file() 函数:

#include <filesystem>
namespace fs = std::filesystem;

// ...

fs::resize_file(p, 1024); // resize to 1024 bytes