IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

le C et les fichiers zippés


Sujet :

C

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut le C et les fichiers zippés
    Bonjour

    Je cherche des informations sur la gestion des fichiers zip en C (pour travailler avec les fichiers OpenOffice.org). Le gros problème des recherches sur google, c'est que le nom du langage de programmation de contient qu'une lettre !

    Pour le moment, j'ai trouvé deux bibliothèques :
    http://www.zlib.net
    http://www.info-zip.org/

    Avez-vous des conseils à donner ? J'aimerais que la compilation soit tout aussi aisée à gérer sous Linux que windows que MAC...

    Pour information, le cours de mon programme est en gtk s'il ça peut influencer le choix.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre chevronné Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Par défaut
    J'ai passé quelques temps à la recherche d'une lib permettant de faire ça (en C++), et j'avoue que c'est loin d'être évident...

    La zlib est une lib qui permet de compresser ou de décompresser des fichiers. Elle est moyennement compliquée à utiliser, surtout à cause du manque de documentation (un exemple et les pages de man). De plus, je n'ai pas réussi à explorer une arborescence compressée (zlib décompresse un flux, basta). On peut peut-être le faire, mais je n'y suis pas arrivé...

    En fait, ce que tu cherches est plus dans le répertoire minizip de la zlib

    Pour la compile, c'est portable, tu peux linker en statique ou en dynamique et il suffit d'inclure un .h

    Si jamais tu arrives à lire une arborescence, je suis preneur...

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    J'avoue que je cherche toujours depuis !
    je ne trouve rien

    Je me demande si je vais passer par un appel de fonctions shell : zip et unzip !

    Mais, est-ce que ça marchera aussi sous Windows ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Salut,

    Tu as regarde du cote de libarchive? J'ai survole vite fait la doc, ca a pas l'air tres complique.

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Ça paraît pesque parfait !
    Seulement, sur la page : http://code.google.com/p/libarchive/...archiveFormats , j'ai trouvé :
    Zip (read only, with some limitations, uses zlib; write support starting with libarchive 2.8)
    Comme la version est la 2.8.4 , ça devrait passer... Mais, dans archive.h, je ne trouve pas la fonction de compression des zip ! Voici la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /* The dev/ino of a file that won't be archived.  This is used
     * to avoid recursively adding an archive to itself. */
    __LA_DECL int		 archive_write_set_skip_file(struct archive *, dev_t, ino_t);
     
    __LA_DECL int		 archive_write_set_compression_bzip2(struct archive *);
    __LA_DECL int		 archive_write_set_compression_compress(struct archive *);
    __LA_DECL int		 archive_write_set_compression_gzip(struct archive *);
    __LA_DECL int		 archive_write_set_compression_lzma(struct archive *);
    __LA_DECL int		 archive_write_set_compression_none(struct archive *);
    __LA_DECL int		 archive_write_set_compression_program(struct archive *,
    		     const char *cmd);
    __LA_DECL int		 archive_write_set_compression_xz(struct archive *);
    Pour le moment, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cd LibO;zip feuille.odt content.xml");
    Mais, est-ce compatible Windows ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 816
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par troumad Voir le message
    Pour le moment, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cd LibO;zip feuille.odt content.xml");
    Mais, est-ce compatible Windows ?
    A condition que sous windows tu puisses utiliser winzip en ligne de commande (et ça j'en sais rien) alors oui ça marchera.

    Faut bien comprendre qu'un appel system() se comporte exactement comme si tu appelais toi-même le programme manuellement. Si tu peux l'appeler manuellement alors tu peux l'appeler par system().

    En dehors de ça, est-ce la meilleure solution ? Ca dépend de la criticité de ton truc. Si tu veux faire un truc rapide et pas cher alors c'est ok. Si tu dois insérer ton programme dans une centrale nucléaire, alors peut-être que tu auras intérêt à te concentrer sérieusement sur l'utilisation de la librairie zlib pour que ce soit ton programme qui contrôle la compression au lieu de déléguer au système...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    A condition que sous windows tu puisses utiliser winzip en ligne de commande (et ça j'en sais rien) alors oui ça marchera.
    Mon problème est là : avoir la commande zip sous windows.

    Citation Envoyé par Sve@r Voir le message
    Si tu veux faire un truc rapide et pas cher alors c'est ok.
    C'est bien ce que je cherche

    Citation Envoyé par Sve@r Voir le message
    te concentrer sérieusement sur l'utilisation de la librairie zlib pour que ce soit ton programme qui contrôle la compression au lieu de déléguer au système...
    Je suis surpris qu'il n'y ait rien de simple en C pour compresser ! Je ne pense pas être le premier qui souhaite rajouter un fichier à une archive !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par troumad Voir le message
    Je suis surpris qu'il n'y ait rien de simple en C pour compresser ! Je ne pense pas être le premier qui souhaite rajouter un fichier à une archive !
    Qu'est ce qui ne te convient pas avec la zlib ?

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Citation Envoyé par gl Voir le message
    Qu'est ce qui ne te convient pas avec la zlib ?
    Je ne suis pas arrivé à trouver simplement ce que je cherche. Il me semble que pour rajouter un fichier à une archive, je dois manipuler plein de choses.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 816
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par troumad Voir le message
    Je ne suis pas arrivé à trouver simplement ce que je cherche. Il me semble que pour rajouter un fichier à une archive, je dois manipuler plein de choses.
    Hum. Je connais pas zlib mais il me semble qu'elle s'articule un peu comme une manipulation de fichier. On ouvre un fochier zippé, on lit ou on écrit et on ferme. Bref c'est un peu comme ça que je la perçois.

    Le problème c'est que tu voudrais un truc tout fait qui fasse ce que tu veux. Alors certes ça pourrait exister mais ça ne ferait peut-être pas ce qu'un autre veut.
    Et donc la librairie a été découpée en une multitude de toutes petites tâches très atomiques. Et toi, ben il te faut trouver lesquelles utiliser. Plus compliqué au premier abord, certes, mais ensuite, si t'as d'autres travaux de compression, ben tu gagneras un temps fou...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Système/Fichiers/API] Crypter les noms de fichier zippés avec TJclZipCompressArchive
    Par Pascale38 dans le forum C++Builder
    Réponses: 0
    Dernier message: 17/03/2014, 14h35
  2. Réponses: 4
    Dernier message: 16/08/2003, 13h21
  3. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  4. [TP]Lister les fichiers d'un répertoire
    Par nvtitan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 21/06/2002, 11h22
  5. Les fichiers d'un projet
    Par Manolo dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/05/2002, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo