Membres inscrits :668
Membres en ligne : 0
Invités en ligne : 10


|
| Menu Snippets (navigation): |
| Détails du snippet : [wxZlibStreams] : Sauvegarder des données en les compressant |
| Informations sur l'auteur de ce snippet : | |

Hors ligne
| Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
|
| Introduction / Description : | |
Il peut être utile, si vous avez une grande quantité de texte à enregistrer sur disque, de compresser vos données avec un wxZlibOutputStream
Voici une méthode très simple pour l'utiliser : Pour l'exemple, nous sauvegarderons plusieurs fois la même ligne
Code wxWidgets:#include <wx/zstream.h> #include <wx/wfstream.h> #include <wx/txtstrm.h> void SaveDatas(const wxString& FileName) { wxString sLine; int i; // Création du fichier de sauvegarde wxFileOutputStream f_out(FileName); // Assignation d'un stream de compression au fichier // Le deuxième paramètre est le taux de compression: // 0=Pas de compression; 9=Compression maximale wxZlibOutputStream z_out(f_out,9); // Assignation d'un stream texte au stream de compression wxTextOutputStream t_out(z_out); // On sauvegarde nos données for (int i=0;i<1000;i++) { sLine.Printf("Ceci est la ligne de texte à sauver N°%0d",i+1); t_out << sLine << "\n"; } } void ReadDatas(const wxString& FileName) { // Ouverture du fichier avec un stream normal wxFileInputStream f_in(FileName); // Assignation d'un stream de décompression au fichier ouvert wxZlibInputStream z_in(f_in); // Assignation d'un stream texte au stream de décompression wxTextInputStream t_in(z_in); // Lecture des données while (!z_in.Eof()) { sLine=t_in.ReadLine(); // A vous de faire ce que vous voulez de votre ligne de texte } }
Je vous laisse le soin, bien entendu, d'ajouter une vérification de la bonne ouverture/création du fichier à lire/écrire.
Faites l'essai en changeant le taux de compression dans la fonction SaveDatas, pour constater l'efficacité de la compression.
En espérant que cela pourra être utile.
@+ Xav'
Il n'y a pas encore de commentaire pour ce snippet.
| Menu Snippets (navigation): |
|