Bibliothèque QFile
La gestion des fichiers
Mécanisme indispensable dans un programme informatique, l'ouverture et la modification de fichiers informatiques.
La bibliothèque liée est QFile qui hérite de QFileDevice
Initialisation et ouverture
Il faut dans un premier temps déclarer le fichier en initialiser une instance de QFil
Puis ouvrir le fichier :
chaine="monfichier.txt";
QFile myfile(chaine);
if(myfile.open(QIODevice::ReadOnly))
{
//traitement si l'ouverture du fichier se passe bien
}
else
QMessageBox::critical(this,"Erreur","Le fichier "+chaine+"/n ne peut être ouvert.");
Remarque 1 : La fonction OPEN renvoie un booléen égal à VRAI si le fichier peut s'ouvrir.
Remarque 2 : les paramètres possibles de Open sont :
- IO_readOnly : déclarer un fichier
- IO_WriteOnly : déclarer un fichierEcriture dans le fichier en écrasant son contenu antérieur (si le fichier n'existait pas, il est créé)
- IO_WriteOnly|IO_Append : Ecriture dans le fichier, à la suite de son contenu antérieur
Traitement des données
Mettre le contenu d'un fichier dans un tableau de caractère :
// .h
.....
public
unsigned char * montableau;
......
//.cpp
myfile.read((char *)montableau, taillefichier);
Se positionner à un endroit du fichier :
myfile.seek(0);//on revient au debut du fichier
Ecrire dans un fichier le contenu d'un tableau
myfile.write((char*)montableau,taillefichier);
Traitement de textes
Si le fichier est un fichier texte, la manipulation du texte peut être facilitée par une instance de la classe QTextStream.
Initialisation
QFile montxtfile("fichier.txt");
montxtfile.open(IO_ReadOnly);
QTextStream letexte(& montextfile);
Ecrire
letexte <<"Bonjour"<<"\n"; //écriture de Bonjour avec retour à la ligne dans le fichier texte
Lecture
QString texte;
letexte>>texte; //place dans la chaîne texte la chaîne de caractère textuelle interprétable.
Remarque : La suite de caractère utilisée pour construire la valeur attribuée à la variable s'arrête dès qu'un caractère non interprétable est rencontré (espace, tabulation, saut de ligne, etc...)
Autres fonctions utilisables :
- readLine : renvoie un QString qui contient tous les caractères entre la position courante et le saut de ligne.
- read : renvoie un QString qui contient tous les caractères de la position courante du fichier à la fin du fichier.
- atEnd : renvoie un booleen qui informe du fait qu'on est arrivé à la fin du fichier ou non.
Exemple :
if(fichier.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream flux(&fichier);
while(!flux.atEnd())
texte += flux.readLine();
fichier.close();
}
Fermeture
Un fichier ouvert doit être nécessairement fermé pour permettre d'autres ouvertures :
myfile.close();
Vérification d'existence du fichier
Cette fonction permet de savoir si le fichier existe ou non :
if (myfile.exists())
{
// traitement
}
else
QMessageBox::critical(this,"Erreur critique", "Impossible d'ouvrir le fichier "+myfile.name());
Comment choisir un fichier
On utilise la fenêtre d'ouverture de fichier.