Fonctions de fichier et de flux de données
La classe QIODevice est la classe d'interface de base de tous les périphériques d'entrée/sortie dans Qt. Qt Core. QIODevice fournit à la fois une implémentation commune et une interface abstraite pour les périphériques qui prennent en charge la lecture et l'écriture de blocs de données. Le périphérique peut être un tampon de mémoire, un fichier ou un flux de données.
Certaines sous-classes comme QFile ont été implémentées en utilisant une mémoire tampon pour le stockage intermédiaire des données. Cela permet d'accélérer les programmes en réduisant les opérations de lecture/écriture. La mise en mémoire tampon rend les fonctions telles que getChar() et putChar() rapides, car elles peuvent opérer sur la mémoire tampon au lieu d'opérer directement sur le périphérique lui-même.
La classe QFile fournit des fonctions de lecture et d'écriture de fichiers. Un QFile peut être utilisé seul ou, plus commodément, avec un QTextStream ou un QDataStream.
QBuffer La classe QByteArray vous permet d'accéder à une à l'aide de l'interface QIODevice. Le QByteArray est traité comme un fichier standard à accès aléatoire. Voici un exemple :
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'
Appelez open() pour ouvrir la mémoire tampon. Appelez ensuite write() ou putChar() pour écrire dans le tampon, et read(), readLine(), readAll() ou getChar() pour lire dans le tampon. size() renvoie la taille actuelle de la mémoire tampon, et vous pouvez rechercher des positions arbitraires dans la mémoire tampon en appelant seek(). Lorsque vous avez fini d'accéder au tampon, appelez close().
La classe QDataStream assure la sérialisation des données binaires vers un QIODevice. Un flux de données est un flux binaire d'informations codées qui est indépendant à 100 % du système d'exploitation, de l'unité centrale ou de l'ordre des octets de l'ordinateur hôte. Par exemple, un flux de données écrit par un PC sous Windows peut être lu par un Sun SPARC sous Solaris. Vous pouvez également utiliser un flux de données pour lire/écrire des données binaires brutes non codées.
Pour plus de détails sur les types de données que QDataStream peut sérialiser, voir Serializing Qt Data Types (Sérialisation des types de données Qt).
La classe QTextStream fournit une interface pratique pour la lecture et l'écriture de texte. QTextStream peut opérer sur une QIODevice, une QByteArray ou une QString. En utilisant les opérateurs de flux de données de QTextStream, vous pouvez lire et écrire des mots, des lignes et des nombres de manière pratique. Il est également courant d'utiliser QTextStream pour lire l'entrée de la console et écrire la sortie de la console.
Il existe trois façons générales d'utiliser QTextStream pour lire des fichiers texte :
- Morceau par morceau, en appelant readLine() ou readAll().
- Mot par mot. QTextStream prend en charge la lecture en continu dans les tampons QStrings, QByteArrays et char*. Les mots sont délimités par des espaces, et les espaces blancs en début de mot sont automatiquement ignorés.
- Caractère par caractère, en utilisant les types QChar ou char. Cette méthode est souvent utilisée pour faciliter la gestion des entrées lors de l'analyse des fichiers, indépendamment du codage des caractères et de la sémantique de fin de ligne. Pour ignorer les espaces blancs, appelez skipWhiteSpace().
QByteArray peut être utilisé pour stocker à la fois des octets bruts (y compris \0) et des chaînes traditionnelles de 8 bits terminées par '\0'. L'utilisation de QByteArray est beaucoup plus pratique que l'utilisation de const char *. Elle garantit toujours que les données sont suivies d'un terminateur '\0' et utilise des classes implicitement partagées (copy-on-write) pour réduire l'utilisation de la mémoire et éviter les copies inutiles de données.
En plus de QByteArray, Qt fournit également la classe QString pour stocker des données de type chaîne de caractères. Dans la plupart des cas, QString est la classe la plus appropriée. Elle stocke des caractères Unicode de 16 bits. Il est toutefois conseillé d'utiliser QByteArray lorsque vous devez stocker des données binaires brutes et lorsque la conservation de la mémoire est essentielle (par exemple, avec Qt for 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.