QFile / QDataStream写入现有数据

时间:2010-08-06 09:59:01

标签: c++ qt overwrite qfile

我有一个文件,比方说长度为8个字节。 例如它看起来像:

22222222

现在,我首先阅读让我们说5个字节并更改它们。对于前者到11111

最后,我想将它们写入文件的ONTO EXCISTING DATA,所以我希望文件看起来像这样:

11111222

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

3 个答案:

答案 0 :(得分:7)

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

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();

答案 1 :(得分: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;
}

答案 2 :(得分:0)

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

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