Seite 1 von 1

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

Verfasst: 10. April 2013 09:18
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) 4915 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) 4915 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! :)

Re: QFile to QByteArray und QByteArray to QFile Problem

Verfasst: 10. April 2013 09:39
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 )

Re: QFile to QByteArray und QByteArray to QFile Problem

Verfasst: 10. April 2013 10:09
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();
	}

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

Verfasst: 10. April 2013 12:03
von Christian81
Und wann löschst Du die Pointer für file1 und file2 wieder? Warum benutzt Du da überhaupt new?

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

Verfasst: 10. April 2013 13:05
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: