Domanda

Io ho un file che è diciamo 8 byte di lunghezza. Per esempio sembra che:

22222222

Ora, leggo primi diciamo 5 byte e cambiarle. Per es. a 11111

Infine, voglio scrivere loro SU excisting dati al file, quindi mi aspetto il file per sembrare che:

11111222

Ma ho solo 11111, perché il file viene cancellato. Come posso disabilitare la cancellazione? (Forse esiste questa domanda, ma domanda couldn scoperta come questo)

È stato utile?

Soluzione

A seconda di ciò che si sta facendo esattamente con il file, si potrebbe desiderare di memoria mappare:

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

Altri suggerimenti

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

Questa funzione di scrittura dei dati.

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

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

Provare ad aprire il QFile con | QIODevice::Append, QFile::seek() poi, quindi creare il QDataStream sull'oggetto QFile. Ma nota che QDataStream aggiunge informazioni di controllo per l'uscita, in modo che, probabilmente, non si traduca in esattamente quello che vuole.

Inoltre, se si desidera il testo di scrittura, i dati non binari, provare con QTextStream.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top