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 :


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 :

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.