用C ++编辑现有文件

时间:2013-03-21 11:53:40

标签: c++ file

我在Qt中有我的应用程序的首选项文件。 每当我启动应用程序时,它都会加载文件&取决于内容相应地创建小部件。我已经为用户提供了一些自定义选项。现在,当我的申请被关闭时,我正在检查首选项是否已更改。如果是,那么我将再次打开首选项文件&然后再在其中添加所有内容。我没有创建临时文件,我正在直接编辑该文件。这种方法是否有效?或者我做错了吗?因为我找到了这些线程: 1. What is the best way to edit the middle of an existing flat file?

  1. http://qt-project.org/forums/viewthread/25924/
  2. 应该使用我的二进制文件?目前我正在使用ASCII文件。 感谢。

    更新:在上面的stackoverflow链接中,正确的答案有

      

    如果你使用平板电脑,那么你就会陷入困境   更新它们的方式

    我想问一下我使用的方法是老式的还是现在有更好的方法吗? &安培;平面文件是什么意思?

2 个答案:

答案 0 :(得分:3)

  1. 不要尝试编辑文件。重写整个事情
  2. 使用临时文件重写。即将当前的首选项状态写入临时文件。然后在确保成功写入临时文件后,将文件移动/重命名为您的实际首选项文件。这有助于在您重写文件时发生崩溃。如果你直接重写它,你将既没有旧的也没有新的。如果你通过一个临时文件来做,那么这样做可以确保在崩溃的情况下,你至少有一个好的偏好文件(虽然它包含旧的偏好)。
  3. 文本/二进制没有太大区别,除非它是一个非常大的文件。如果需要,文本将有助于手动编辑。

答案 1 :(得分:0)

这是一种非常好的方式。由于您似乎已将所有首选项加载到内存中并且您已在其中编辑它们,因此您无需费心使用临时文件(除非您希望在编写过程中确保程序失败时确保安全性)。只需将所有首选项写回原始文件即可。

您是否选择二进制文件或文本文件。首选项往往是文本文件,因为它们具有仅使用文本编辑器而不是用于查看它们的专用软件而具有人类可读性的附加好处。但是,由于解码更简单,二进制文件的性能可能稍好一些。