FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

La FAQ pour la programmation C++ avec QtConsultez toutes les FAQ

Nombre d'auteurs : 25, nombre de questions : 223, dernière mise à jour : 25 août 2012 

 
OuvrirSommaireModulesQtCoreFichiers et répertoiresLecture et écriture

L'écriture dans un fichier texte se fait comme pour la lecture à l'aide de la classe QTextStream. Celle-ci fournit l'opérateur << qui possède énormément de surcharges pour l'écriture dans un fichier. De plus, on peut spécifier le jeu de caractères utilisé pour l'écriture avec la méthode QTextStream::setCodec.

Un exemple : on souhaite écrire le fichier suivant avec le jeu de caractères UTF-8.

 
Sélectionnez
Bonjour,
Nous sommes le 3 avril 2009 
 
Sélectionnez
// Création d'un objet QFile
QFile file("Qt.txt");
// On ouvre notre fichier en lecture seule et on vérifie l'ouverture
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    return;

// Création d'un objet QTextStream à partir de notre objet QFile
QTextStream flux(&file);
// On choisit le codec correspondant au jeu de caractère que l'on souhaite ; ici, UTF-8
flux.setCodec("UTF-8");
// Écriture des différentes lignes dans le fichier
flux << "Bonjour," << endl << "Nous sommes le " << 3 << " avril " << 2009 << endl;
Mis à jour le 7 juillet 2009  par François Jaffré

La classe QTextStream offre des fonctionnalités intéressantes.

 
Sélectionnez
QString fileName = "fichier.txt";
QFile fichier(fileName);
fichier.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream flux(&fichier);

On peut ensuite lire le fichier de plusieurs façons.

* Intégralement.

 
Sélectionnez
QString tout = flux.readAll();

* Ligne par ligne.

 
Sélectionnez
QString ligne;
while(! flux.atEnd())
{
    ligne = flux.readLine();
    //traitement de la ligne
}

* Mot par mot.

 
Sélectionnez
QString mot;
while(! stream.atEnd())
{
    stream >> mot;
    // traitement du mot
}

La classe QTextStream offre une moyen simple d'écrire ou de lire du texte, d'en extraire ou d'ajouter des lignes, des mots ou des nombres, un QTextStream pouvant fonctionner avec un QIODevice, une QString ou même un QByteArray. Les opérateurs surchargé << et >> permettent d'opérer sur un QTextStream de façon très simple.
Remarque : Cette classe prend en compte l'encodage du texte.

On peut aussi lire intégralement le contenu d'un fichier sans passer par la classe QTextStream, mais cela nécessite de passer par la classe QByteArray.

 
Sélectionnez
QString fileName = "fichier.txt";
QFile fichier(fileName);
fichier.open(QIODevice::ReadOnly);
QByteArray data;

data = fichier.readAll();
QString ligne(data);

De même, on peut lire le fichier ligne par ligne.

 
Sélectionnez
QString fileName = "fichier.txt";
QFile fichier(fileName);
fichier.open(QIODevice::ReadOnly);
QByteArray data;

while(!fichier.atEnd())
{
    data = fichier.readLine();
    QString ligne(data);
    //traitement de la ligne
}
Mis à jour le 7 mai 2012  par haraelendil

Qt permet facilement d'écrire ou de lire dans un fichier de type binaire. Ceci se fait à l'aide de la classe QFile pour l'ouverture et la fermeture du fichier et de la classe QDataStream pour l'écriture ou la lecture de celui-ci. L'intérêt d'utiliser la classe QDataStream est d'être indépendant de la machine au niveau de l'encodage des octets. Dans les faits cela veut dire qu'un fichier binaire étant écrit à l'aide de la classe QDataStream sous Windows par exemple peut être lu sans problème sous toutes les autres plateformes supportant Qt (Mac, Linux...).

Remarque : par défaut, QDataStream travaille en big-endian.

Écriture d'un fichier binaire
CacherSélectionnez
Lecture d'un fichier binaire
CacherSélectionnez
Mis à jour le 7 mai 2012  par François Jaffré
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.