以不同频率写入多个文件的最佳做法?

时间:2014-08-13 20:48:04

标签: c++ file-io ofstream

寻找管理系统中文件输出的最佳方法(C ++)。提前感谢您的回复!

系统:

  • 连续数周运行
  • 只需要在某些时间将信息写入文件(在第二秒结束前无法预先确定)
  • 一个日志/调试类型的文件将以更高的频率(例如每1-60秒)和更大的块(每次0.1-0.5k,可能每分钟几k)写入
  • 一种摘要类型的文件将以较低的频率(例如每5-30分钟)和较小的块(一条短线)写入

我的想法:

  • 有两个流,每个文件一个

    • 问题1:在必要时只使用一个流和切换文件属性是否更好?
  • 创建两个std :: strings来存储每秒的潜在信息。然后在第二秒结束时,如果需要将信息写入一个或多个文件,请打开文件,写入并关闭。

    • 问题2:字符串是好持有人吗?是否有某种缓冲区可以在没有刷新的情况下编写,然后在第二步结束时我只是决定是否丢弃或刷新?

    • 问题3:鉴于较大的文件可能像每秒一样频繁写入,我们是否每秒都打开/关闭?最好一直保持开放状态吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

  • 答案1:使用单独的ofstream(每个文件一个)。
  • 答案2:您可以使用ostringstream存储部分信息。
  • 答案3:只有在您不需要阅读时才能保持文件打开。无论如何每秒打开/关闭都不是那么昂贵