【问题标题】:Can we reduce size of existing file? [closed]我们可以减小现有文件的大小吗? [关闭]
【发布时间】:2019-01-05 19:42:59
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

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

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

// ...

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

【讨论】:

  • 将来会使用它。目前我使用的是旧标准。
猜你喜欢
  • 2011-11-09
  • 2012-05-18
  • 1970-01-01
  • 2012-03-05
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多