Historique des modifications - Message

Message #8205

Sujet: Décompresser un fichier zip


Type Date Auteur Contenu
Dernière modification 20-04-2010 20:02:00 narugohan
ok, je te remercie, j'ai réussi à faire l'extraction comme je veux, mais il y a un problème encore, j'ai un dossier dans mon archive, et quand j'essaye de le crée avec la fonction :

createAndWriteFile (const path &filename, bool append=false)=0

le problème, c'est que sa me crée un fichier portant le nom de se dossier, et cela me met dezippe les autres fichier dans dossier de l'archive alors que je voudrai que sa me crée un dossier à la place d'un fichier, et que sa me place les fichiers copris dans se dossier....Bah dans le dossier xD

Voilà mon code au cas où :

Code c++ :


//Récupère le FileSystem
        IFileSystem*  pfs = device->getFileSystem();
        //Ajoute ton archive
        pfs->addZipFileArchive("MAJ.zip");
        //Récupère ton archive
        IFileArchive * zipfile = pfs->getFileArchive(0);
        const IFileList *fileList = zipfile->getFileList();
        u32 nbxFile = fileList->getFileCount();
        QMessageBox::information(this, "Mise à jour news", "Nbx de fichier : " + QString::number(nbxFile) );

        //pfs->drop();
        //zipfile->drop();
        //Boucle for :
        for (int i = 0; i < nbxFile; i++)
        {
            //Récupère le fichier de ton archive
            IReadFile* file = zipfile->createAndOpenFile(i);
            ///--->>><<<---///
            u32 size = file->getSize(); //La taille du fichier
            //Création du buffer
            char* buffer = new char[size];
            //Lecture du fichier
            file->read((void*) buffer, size);
            //On créé le fichier à écrite
            if( fileList->isDirectory(i) )
                QMessageBox::information(this, "Mise à jour news", "test" );
            IWriteFile* fichierecrit = pfs->createAndWriteFile(fileList->getFullFileName(i));
            if (fichierecrit)
            {
                //Ecriture
                fichierecrit->write((void*) buffer, size);
                //Libération mémoire
                fichierecrit->drop();
            }
            //On libère la mémoire, très important
            delete[] buffer;
            buffer = 0;
            file->drop();
            ///--->>><<<---///
        }
Création du message 20-04-2010 20:01:35 narugohan
ok, je te remercie, j'ai réussi à faire l'extraction comme je veux, mais il y a un problème encore, j'ai un dossier dans mon archive, et quand j'essaye de le crée avec la fonction :

createAndWriteFile (const path &filename, bool append=false)=0

le problème, c'est que sa me crée un fichier portant le nom de se dossier, et cela me met dezippe les autres fichier dans dossier de l'archive alors que je voudrai que sa me crée un dossier à la place d'un fichier, et que sa me place les fichiers copris dans se dossier....Bah dans le dossier xD

Voilà mon code au cas où :

Code c++ :


//Récupère le FileSystem
        IFileSystem*  pfs = device->getFileSystem();
        //Ajoute ton archive
        pfs->addZipFileArchive("MAJ.zip");
        //Récupère ton archive
        IFileArchive * zipfile = pfs->getFileArchive(0);
        const IFileList *fileList = zipfile->getFileList();
        u32 nbxFile = fileList->getFileCount();
        QMessageBox::information(this, "Mise à jour news", "Nbx de fichier : " + QString::number(nbxFile) );

        //pfs->drop();
        //zipfile->drop();
        //Boucle for :
        for (int i = 0; i < nbxFile; i++)
        {
            //Récupère le fichier de ton archive
            IReadFile* file = zipfile->createAndOpenFile(i);
            ///--->>><<<---///
            u32 size = file->getSize(); //La taille du fichier
            //Création du buffer
            char* buffer = new char[size];
            //Lecture du fichier
            file->read((void*) buffer, size);
            //On créé le fichier à écrite
            if( fileList->isDirectory(i) )
                QMessageBox::information(this, "Mise à jour news", "test" );
            IWriteFile* fichierecrit = pfs->createAndWriteFile(fileList->getFullFileName(i));
            if (fichierecrit)
            {
                //Ecriture
                fichierecrit->write((void*) buffer, size);
                //Libération mémoire
                fichierecrit->drop();
            }
            //On libère la mémoire, très important
            delete[] buffer;
            buffer = 0;
            file->drop();
            ///--->>><<<---///
        }

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
234 invités en ligne
membre en ligne: -
RSS Feed