【问题标题】:Writing to c++ file till a specified file size is reached写入 c++ 文件直到达到指定的文件大小
【发布时间】:2011-11-22 00:14:00
【问题描述】:

我正在编写一个 c++ 程序来写入指定大小的文本文件。我最初创建了一个指定大小为 2 KB 的文本文件,我想继续写入该文件,直到达到 2 KB 限制并通知用户。我不确定最好的方法是什么。 我正在寻找一个跨平台的解决方案。像 libevent (http://libevent.org/) 这样的东西会对此有好处吗?还是我错过了一些更简单的东西。

非常感谢任何建议/帮助。

谢谢

【问题讨论】:

标签: c++ filesystems


【解决方案1】:
#include <fstream>

int main()
{
    std::ofstream ofs("output.img", std::ios::binary | std::ios::out);
    ofs.seekp((2<<10) - 1);
    ofs.write("", 1);
}
  • 如果你想检测文件位置,你可以使用std::ofstream::tellp()
  • 或者,sync + stat 将能够在不重新打开文件的情况下获得最新的文件大小

【讨论】:

  • @ababeel:那你也写了。
  • @ababeel:不要停止阅读代码。其余答案包含有关如何监视文件大小的提示!
  • 我要失明或低血糖(我不知道是哪一个)。谢谢我没有读过最后两行。我很抱歉。
  • 请提供更多帮助我想我在写入文件时无法获取文件大小。例如我在做 -> while(i++ 1024) 中断; }。文件大小似乎为零。我尝试使用各种方法获取文件大小,stat,ifstream::tell 等。请告知谢谢。
  • stat 需要 fsync(因此文件系统驱动程序不只是告诉您最后已知的大小)并且 ifstream::tell 听起来不正确;您正在写作,所以ostream::tellp 似乎是有序的。不要忘记ofs &lt;&lt; std::flush开箱即用你为什么不看看内存映射?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2021-11-01
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多