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

时间:2018-07-29 09:37:11

标签: c++ c file-io fstream file-handling

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

如果是,那么如何。如果没有,那为什么。

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

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

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

// ...

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