【问题标题】:QFile/QDataStream writing on existing dataQFile/QDataStream 写入现有数据
【发布时间】:2011-03-26 06:16:28
【问题描述】:

我有一个 8 字节长的文件。 例如它看起来像这样:

22222222

现在,我首先读取 5 个字节并更改它们。例如。给11111

最后,我想将它们写入到文件中,所以我希望文件看起来像这样:

11111222

但我只得到11111,因为文件已被删除。如何禁用擦除? (也许这个问题存在,但找不到这样的问题)

【问题讨论】:

    标签: c++ qt overwrite qfile


    【解决方案1】:

    根据您对文件的具体操作,您可能需要对其进行内存映射:

    QFile f("The file");
    f.open(QIODevice::ReadWrite);
    uchar *buffer = f.map(0, 5);
    
    // The following line will edit (both read from and write to)
    // the file without clearing it first:
    for (int i=0; i<5; ++i) buffer[i] -= 1;
    
    f.unmap(buffer);
    f.close();
    

    【讨论】:

      【解决方案2】:
      void fileopen()
      {
      QDataStream Input(&file);
      Input>>"11111";
      Input>>"22222";
      file.close();
      }
      

      这个函数写入数据。

      QDataStream &operator<<(QDataStream &ds,const QString &data)
      {
      
      ds<<data.toLatin1().data();
      ds<<data.toLatin1().data();
      return ds;
      }
      

      【讨论】:

        【解决方案3】:

        尝试使用| QIODevice::Append 打开QFile,然后使用QFile::seek(),然后在QFile 对象上创建QDataStream。但请注意,QDataStream 将控制信息添加到输出中,因此可能不会得到您想要的结果。

        此外,如果您想写入文本而不是二进制数据,请尝试使用 QTextStream

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-15
          • 1970-01-01
          • 2019-04-02
          • 1970-01-01
          • 2016-11-04
          • 1970-01-01
          相关资源
          最近更新 更多