我想知道是否可以在不创建临时文件的情况下减小文本或二进制文件的大小。这样我们就可以删除文件结尾处的数据。
如果是,那么如何。如果没有,那为什么。
答案 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