[gelöst] QFile to QByteArray und QByteArray to QFile Problem

Alles rund um die Programmierung mit Qt
Antworten
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

[gelöst] QFile to QByteArray und QByteArray to QFile Problem

Beitrag von Tom_Tom »

Hallo liebe Gemeinde,

mein Problem ist wahrscheinlich simpel zu lösen, aber ich probiere es schon seit Wochen und finde keine Lösung.

In file1 (ist hier eine Textdatei, kann aber auch eine PDF, Excel, Word, exe, etc. sein.) steht: "Hallo Welt!".
Das ist text.txt, welche eingelesen wird.
Das ist text.txt, welche eingelesen wird.
anhang1.png (3.74 KiB) 4821 mal betrachtet
Das möchte ich auslesen und in ein QByteArray ablegen, da es später noch in eine QMap kommt und weiterverarbeitet wird.
Später möchte ich dieses QByteArray wieder zurück in eine Datei schreiben. Allerdings steht dann noch etwas vor dem "Hallo Welt!".
Dast ist test2.txt, welche geschrieben wird.
Dast ist test2.txt, welche geschrieben wird.
anhang2.png (3.92 KiB) 4821 mal betrachtet


Hier der Code:

Code: Alles auswählen

	QFile * file1 = new QFile("Debug/test.txt");
	QByteArray byteArrayFile1;
	if (file1->open(QIODevice::ReadOnly)) {
		byteArrayFile1 = file1->readAll();
		file1->close();
	}

	QFile * file2 = new QFile("Debug/test2.txt");
	if (file2->open(QIODevice::Truncate|QIODevice::WriteOnly)) {
		QDataStream stream(file2);
		stream.setVersion(QDataStream::Qt_5_0);
		stream << byteArrayFile1;
		file2->close();
	}
Ich hoffe, ihr habt eine Idee und könnt mir helfen.
Viele Grüße! :)
Zuletzt geändert von Tom_Tom am 10. April 2013 10:18, insgesamt 1-mal geändert.
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: QFile to QByteArray und QByteArray to QFile Problem

Beitrag von veeman »

Weil der << Operator dieser Klasse noch vor dem Content die Länge des Contents schreibt.
Verwende dafür besser writeRawData bzw. direkt qint64 QIODevice::write ( const QByteArray & byteArray )
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

Re: QFile to QByteArray und QByteArray to QFile Problem

Beitrag von Tom_Tom »

Hallo veeman, vielen vielen Dank für die schnelle Antwort. :)
Dann werde ich das mal probieren. Es funktioniert. :D

Code: Alles auswählen

	QFile * file1 = new QFile("Debug/test.txt");
	QByteArray byteArrayFile1;
	if (file1->open(QIODevice::ReadOnly)) {
		byteArrayFile1 = file1->readAll();
		file1->close();
	}

	QFile * file2 = new QFile("Debug/test2.txt");
	if (file2->open(QIODevice::Truncate|QIODevice::WriteOnly)) {
		file2->write(byteArrayFile1);
		file2->close();
	}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: [gelöst] QFile to QByteArray und QByteArray to QFile Pro

Beitrag von Christian81 »

Und wann löschst Du die Pointer für file1 und file2 wieder? Warum benutzt Du da überhaupt new?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

Re: [gelöst] QFile to QByteArray und QByteArray to QFile Pro

Beitrag von Tom_Tom »

Hallo Christian,

das hier war nur ein sehr einfaches Beispiel um das Ganze übersichtlich zu halten und mein Problem zu erklären.
Mein eigentlicher Programmcode ist ganz anders aufgebaut, hätte aber für denjenigen, der mir helfen kann, zuviel Zeit in Anspruch genommen um sich einzulesen.
Daher hatte ich schnell das Beispiel erstellt, welches eben den Fokus auf mein eigentliches Problem legt. :wink:
Antworten