Datei- und Datenstromfunktionen

Die Klasse ` QIODevice ` ist die Basis-Schnittstellenklasse aller E/A-Geräte in Qt Core. „ QIODevice “ bietet sowohl eine gemeinsame Implementierung als auch eine abstrakte Schnittstelle für Geräte, die das Lesen und Schreiben von Datenblöcken unterstützen. Bei dem Gerät kann es sich um einen Speicherpuffer, eine Datei oder einen Datenstrom handeln.

Einige Unterklassen wie ` QFile ` wurden unter Verwendung eines Speicherpuffers zur Zwischenspeicherung von Daten implementiert. Dies beschleunigt Programme, indem Lese- und Schreibvorgänge reduziert werden. Durch die Pufferung werden Funktionen wie ` getChar()` und ` putChar()` schneller, da sie auf den Speicherpuffer statt direkt auf das Gerät selbst zugreifen können.

Die Klasse ` QFile ` stellt Funktionen zum Lesen aus und Schreiben in Dateien bereit. Ein ` QFile ` kann für sich allein verwendet werden oder – was praktischer ist – zusammen mit einem ` QTextStream ` oder ` QDataStream`.

QBuffer ermöglicht Ihnen den Zugriff auf eine ` QByteArray ` über die Schnittstelle ` QIODevice `. Die ` QByteArray ` wird wie eine normale Datei mit wahlfreiem Zugriff behandelt. Ein Beispiel:

QBuffer buffer;
char ch;

buffer.open(QBuffer::ReadWrite);
buffer.write("Qt rocks!");
buffer.seek(0);
buffer.getChar(&ch);  // ch == 'Q'
buffer.getChar(&ch);  // ch == 't'
buffer.getChar(&ch);  // ch == ' '
buffer.getChar(&ch);  // ch == 'r'

Rufen Sie ` open()` auf, um den Puffer zu öffnen. Rufen Sie anschließend ` write()` oder ` putChar()` auf, um in den Puffer zu schreiben, und ` read()`, ` readLine()`, ` readAll()` oder ` getChar()`, um aus ihm zu lesen. ` size()` gibt die aktuelle Größe des Puffers zurück, und Sie können durch Aufruf von ` seek()` zu beliebigen Positionen im Puffer springen. Wenn Sie den Zugriff auf den Puffer beendet haben, rufen Sie ` close()` auf.

Die Klasse „ QDataStream “ ermöglicht die Serialisierung binärer Daten in einen „ QIODevice “. Ein Datenstrom ist ein binärer Strom codierter Informationen, der zu 100 % unabhängig vom Betriebssystem, der CPU oder der Byte-Reihenfolge des Host-Computers ist. So kann beispielsweise ein Datenstrom, der von einem PC unter Windows geschrieben wurde, von einem Sun SPARC mit Solaris gelesen werden. Sie können einen Datenstrom auch zum Lesen und Schreiben von rohen, unkodierten Binärdaten verwenden.

Weitere Informationen zu den Datentypen, die „ QDataStream “ serialisieren kann, finden Sie unter „Serialisierung von Qt-Datentypen“.

Die Klasse „ QTextStream “ bietet eine praktische Schnittstelle zum Lesen und Schreiben von Text. „ QTextStream “ kann mit „ QIODevice “, „ QByteArray “ oder „ QString “ arbeiten. Mit den Streaming-Operatoren von „ QTextStream “ können Sie Wörter, Zeilen und Zahlen bequem lesen und schreiben. Es ist auch üblich, „ QTextStream “ zum Lesen von Konsoleneingaben und zum Schreiben von Konsolenausgaben zu verwenden.

Es gibt drei allgemeine Möglichkeiten, „ QTextStream “ beim Lesen von Textdateien zu verwenden:

  • Chunk für Chunk, durch Aufruf von ` readLine()` oder ` readAll()`.
  • Wort für Wort. „ QTextStream “ unterstützt das Einlesen in „ QStrings“, „ QByteArrays“ und „char*“-Puffer. Wörter werden durch Leerzeichen getrennt, und führende Leerzeichen werden automatisch übersprungen.
  • Zeichen für Zeichen, durch Streaming in „ QChar “- oder „char“-Typen. Diese Methode wird häufig für eine bequeme Eingabeverarbeitung beim Parsen von Dateien verwendet, unabhängig von der Zeichenkodierung und der Zeilenende-Semantik. Um Leerzeichen zu überspringen, rufen Sie „ skipWhiteSpace()“ auf.

QByteArray kann sowohl zum Speichern von Rohbytes (einschließlich ` \0`) als auch von herkömmlichen 8-Bit-Zeichenfolgen verwendet werden, die mit `\0` enden. Die Verwendung von ` QByteArray ` ist wesentlich komfortabler als die Verwendung von `const char *`. Es wird stets sichergestellt, dass auf die Daten ein `'\0`-Abschlusszeichen folgt, und es werden implizit gemeinsam genutzte Klassen (Copy-on-Write) verwendet, um den Speicherbedarf zu reduzieren und unnötiges Kopieren von Daten zu vermeiden.

Neben ` QByteArray` bietet Qt auch die Klasse ` QString ` zum Speichern von Zeichenfolgendaten an. Für die meisten Zwecke ist „ QString “ die am besten geeignete Klasse. Sie speichert 16-Bit-Unicode-Zeichen. Es empfiehlt sich jedoch, „ QByteArray “ zu verwenden, wenn Sie rohe Binärdaten speichern müssen und wenn Speicherplatzersparnis entscheidend ist (zum Beispiel bei Qt für Embedded Linux).

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.