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

Windows Discussion :

[C]Modifier un fichier .zip sous Windows


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut [C]Modifier un fichier .zip sous Windows
    Bonjour,

    Donc voilà, ma question est simple
    Comment faire pour modifier un fichier se trouvant dans une archive .zip ?
    Par-exemple, si dans mon archive ar.zip, j'ai les fichiers bjr.txt et arv.txt, je voudrais écrire "bonjour" dans bjr.txt et sauvegarder l'archive...

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    Trés simplement, tu extrait ce que ton archive contient, tu modifies le nom et tu crées une nouvelle archive.

    Si ton archive n'est pas protégée je pense que tu peux même la renommer en appuyant sur F2, mais je ne te garanties que ton fichier soit intact par la suite.

    Pour faire simple, suis la première astuces

    Bonne continuation

  3. #3
    Membre régulier Avatar de aaron4444
    Inscrit en
    Juin 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 113
    Points : 101
    Points
    101
    Par défaut
    tu extrais seuls les fichiers que tu veux modifier dans le bureau par exemple et ensuite tu les supprime de l'archive, tu fais les modifications et puis tu les places dans l'archive d'origine.

    mais il faut poser ce genre de post dans le forum approprié la prochaine fois
    Le commencement de toutes les sciences, c'est l'étonnement de ce que les choses sont ce qu'elles sont : aristote

    mon blog photo
    est la première solution

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    LOL !! Dsl, j'ai pas été assez clair dans mon premier message ^^
    C'est pas moi qui dois faire ça, c'est mon programme C qui doit pouvoir le faire tout seul
    Etant donné que depuis Windows XP, Explorer est capable de gérer fichiers compressés par la méthode deflate, je me suis dis qu'il était possible de programmer ça via l'API de Windows. J'ai déjà cherché sur le net des librairies comme Zlib et Ziparchive, mais aucune ne convient...
    La première ne gère que le format gzip et la 2ème n'est utilisable qu'en C++.

    D'ailleurs, si vous avez d'autres solution que par l'API Windows, je suis preneur
    Ça fait une semaine que je cherche sans relâche pour pouvoir faire un programme capable de gérer les fichiers zip...

    Merci d'avance pour toute aide que vous pourrez m'apporter

    PS : J'utilise Vista.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    J'étais tombé sur cette page pendant mon Googlage intensif, j'ai strictement rien compris au code VB, donc impossible pour moi de faire un équivalent en C...
    J'ai pas touché au Basic depuis la 2nde
    De plus, je ne suis pas vraiment un expert de l'API Windows, je sais pas faire grand chose à par ShellExecute lol

    Une petite explication sur l'algorithme et les appels effectués par ce bout de code serait la bienvenue

    Merci d'avance.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    OK, alors la première partie, la plus facile, crée l'équivalent d'un fichier .ZIP vide.

    La seconde partie utilise COM pour ordonner au shell de copier le fichier vers le zip. J'essaierai de traduire ça en C si j'ai le temps ce soir, mais ce n'est pas dit...

    Sinon, pour ce genre d'appel, la bibliothèque DispHelper peut être intéressante quand il s'agit de se rapprocher d'un code VB...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    Bah j'ai le temps de toute façon, ça fait un mois que je suis sur ce projet et j'ai encore d'autres trucs à faire dessus, donc ça peut bien attendre un jour ou deux, surtout que ça fait 1 semaine que je cherche comment coder la partie "zip"...
    Généralement quand je programme, j'essaye de me démerder tout seul, et d'aider ceux qui en ont besoin. Mais cette fois c'est moi qui suis bloqué ^^

    Merci d'avance en tout cas

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    Citation Envoyé par Kicker Voir le message
    La première ne gère que le format gzip et la 2ème n'est utilisable qu'en C++.
    Si tu as du code C++ tu peux très bien l'adapter en C..cela demande du travail mais c'est faisable

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    J'aimerais bien, mais j'ai jamais étudié le C++
    Je vais en faire en 2ème année, mais pour l'instant je ne connais que le GTK+ et le Java en POO...

  11. #11
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    Citation Envoyé par Kicker Voir le message
    J'aimerais bien, mais j'ai jamais étudié le C++
    Je vais en faire en 2ème année, mais pour l'instant je ne connais que le GTK+ et le Java en POO...
    Si tu dois appeler des interfaces COM ça risque de poser un problème parce que COM c'est sacrément complexe.
    Avec gzip pas moyen ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    En fait, je cherche à modifier des fichiers .ods (l'équivalent du .xls pour OpenOffice).
    Ces fichiers sont en fait des dossiers compressés par la méthode deflate, ce qui rend gzip totalement inutilisable pour ce que je veux à faire...

    Voilà comment ça se passe :
    J'ai un fichier .ods, que je renomme en .zip et duquel j'extrait le fichier content.xml.
    Je modifie ce fichier et je recompresse l'archive...
    Et tout ça, je dois le programmer en C.

    J'aurais bien utilisé des librairies dédiées mais il faut croire que personne ne s'est encore donné la peine de faire des librairies utilisables en C pour Windows...
    Donc COM me semble être la seule solution à présent...

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    En C, je pense que oui, COM doit être la seule solution viable.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    J'ai réussi à en traduire une partie en C, mais apparemment la DLL Zip de Windows (zipfldr.dll) contient un bug, qui fait que ça devrait marcher dans une application graphique, mais pas vraiment dans un prog console...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Désolé d'arriver si tard mais pour zipper/dézipper, il y a pas mal de tutos (et bibliothèques) sur CodeProject :

    LiteZip
    XZip & XUnzip
    Zip Utils --> Le meilleur (implémentation en C des algorithmes de compression/décompression ZIP).
    ...

    Le hic : Il faut être membre ...

Discussions similaires

  1. Importer un gros fichier SQL sous windows
    Par bigsister dans le forum Outils
    Réponses: 2
    Dernier message: 24/08/2007, 16h17
  2. Compresser *.tar.gz en .zip sous windows
    Par 18Marie dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/07/2006, 16h03
  3. Réponses: 4
    Dernier message: 18/05/2006, 16h00
  4. Afficher un fichier binaire sous Windows
    Par Atomikx dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 14/12/2004, 01h29

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