Création d'un fichier ZIP sous Windows (XP / 2003) en C / C ++
Je suis à la recherche d'un moyen de créer un fichier ZIP à partir d'un dossier dans Windows C/C++ Api. Je peux trouver le moyen de le faire dans VBScript à l'aide de la Shell32.Application CopyHere méthode, et j'ai trouvé un tutoriel expliquant comment le faire en C# aussi, mais rien pour les C de l'API C++ est très bien aussi, le projet déjà utilise les MFC).
Je serais vraiment reconnaissant si quelqu'un peut partager des exemples de code en C qui peuvent réussir à créer un fichier zip sur Windows XP/2003. À défaut, si quelqu'un peut trouver de solides docs ou un tutoriel qui serait génial, depuis MSDN recherche ne tourne pas beaucoup. Je suis vraiment en espérant pour éviter d'avoir à expédier un tiers lib pour cela, parce que la fonctionnalité est évidemment là, je ne peux pas comprendre comment y accéder. Les recherches Google à son tour jusqu'rien d'utile, juste alléchant bribes d'informations. Ici en espérant que quelqu'un dans la communauté a trié ce et pouvez les partager pour la postérité!
source d'informationauteur Jay
Vous devez vous connecter pour publier un commentaire.
EDIT: Cette réponse est vieux, mais je ne peut pas le supprimer parce qu'il a été accepté. Voir le suivant
https://stackoverflow.com/a/121720/3937
----- ORIGINE DE RÉPONSE -----
Il y a un exemple de code pour le faire ici
[EDIT: le Lien est rompu]
http://www.eggheadcafe.com/software/aspnet/31056644/using-shfileoperation-to.aspx
Assurez-vous de lire sur la façon de gérer le suivi le thread terminer.
Edit: D'après les commentaires, ce code ne fonctionne que sur le fichier zip existant, mais @Simon fourni ce code pour créer un nouveau fichier zip
Nous utilisons XZip à cette fin. C'est gratuit, comme code source C++ et fonctionne très bien.
http://www.codeproject.com/KB/cpp/xzipunzip.aspx
Le code ci-dessus pour créer un vide fichier zip est cassé, que les observations de l'état, mais j'ai réussi à le faire fonctionner. J'ai ouvert un vide zip dans un éditeur hexadécimal, et de noter quelques différences. Voici mon modifiés exemple:
Cela a fonctionné pour moi. J'ai pu ensuite ouvrir le dossier compressé. Pas testé avec les applications 3ème partie comme winzip.
Une rapide recherche sur Google est venu avec ce site: http://www.example-code.com/vcpp/vcUnzip.asp qui a un très court exemple pour décompresser un fichier à l'aide d'une bibliothèque. Il ya beaucoup d'autres bibliothèques disponibles. Un autre exemple est disponible sur le Code du Projet intitulé Zip et Décompressez-le dans le MFC qui a tout un exemple graphique. Si vous voulez le faire avec .NET puis il y a toujours les classes de Système.La Compression.
Il y a aussi les 7-Zip bibliothèque http://www.7-zip.org/sdk.html. Cela comprend la source de plusieurs langues, et des exemples.
Je ne pense pas que MFC ou le Windows standard C/C++ Api fournissent une interface pour les construit dans la fonctionnalité de zip.
Vous pouvez toujours lier statiquement à la freeware zip bibliothèque si vous ne voulez pas de navire d'une autre bibliothèque...