Pergunta

Eu tenho um arquivo que é digamos 8 bytes de comprimento. Por exemplo, parece assim:

22222222

Agora, eu li primeiro, digamos 5 bytes e mudando -os. Para ex. para 11111

Por fim, quero escrevê -los em dados excistentes no arquivo, então espero que o arquivo fique assim:

11111222

Mas eu entendo apenas 11111, porque o arquivo é apagado. Como posso desativar apagar? (Talvez essa pergunta exista, mas não pode encontrar perguntas como esta)

Foi útil?

Solução

Dependendo do que você está fazendo exatamente com o arquivo, você pode querer mapear a memória:

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

Outras dicas

void fileopen()
{
QDataStream Input(&file);
Input>>"11111";
Input>>"22222";
file.close();
}

Esta função escreve os dados.

QDataStream &operator<<(QDataStream &ds,const QString &data)
{

ds<<data.toLatin1().data();
ds<<data.toLatin1().data();
return ds;
}

Tente abrir o QFile com | QIODevice::Append, então QFile::seek(), então crie o QDataStream no QFile objeto. Mas observe isso QDataStream Adiciona informações de controle à saída, para que provavelmente não resultem exatamente no que você deseja.

Além disso, se você quiser escrever texto, não dados binários, tente com QTextStream.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top