wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Fichiers - Dossiers - Disques
» [wxZlibStreams] : Sauvegarder des données en les compressant
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: 1374
Snippets: 25
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
Contenu du snippet :

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
    }
}
Explications finales :
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'
Commentaires

Il n'y a pas encore de commentaire pour ce snippet.
Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Fichiers - Dossiers - Disques
» [wxZlibStreams] : Sauvegarder des données en les compressant