Comment puis-je compresser un répertoire ou plusieurs fichiers avec zlib, à l'aide de C/C++?
J'ai fait une recherche pour ce sujet, mais je n'ai trouvé aucun indice pertinent pour cela.
Quelqu'un peut-il me donner quelques conseils ou le code de démonstration qui peuvent résoudre le problème?
Merci d'avance.
---Pour info---
Ce que je veux faire ici est de compresser des fichiers et de les télécharger pour PC à distance.
Je pense qu'il va prendre les mesures suivantes:
a) initialiser un fichier zippé de la tête et l'envoyer vers un PC à distance et enregistrer ce fichier zippé tête.
b) ouvrir le fichier à lire une partie des données du fichier zip et le fichier de données localement.
c) envoyer zippée données à travers un tuyau (tcp ou udp par exemple) à un ordinateur à distance.
d) enregistrer les données de la conduite, qui est zippé, sur le PC distant.
e) s'il y a plusieurs fichiers, revenir à b)
e) lorsque tous les fichiers est zippé et transférées à un PC à distance, puis fermez le fichier zippé.
Deux question ici:
a) compresser/décompresser
b) format de Fichier
Merci les gars!
- Il y a un couple lié ce post
- J'ai vérifié ces liens:1)bobobobo.wordpress.com/2008/02/23/how-to-use-zlib 2)codeguru.com/cpp/cpp/algorithms/compression/article.php/c11735, un seul fichier compresser/décompresser seulement. Merci de toute façon. 🙂
- Ce que je veux faire ici est: zip multi-fichiers localement et envoyer des tampons à travers un tuyau (tcp ou udp par exemple) et ensuite enregistrer le fichier zippé sur le côté opposé de la fermeture.
Vous devez vous connecter pour publier un commentaire.
zlib
zips en un flux unique. Si vous souhaitez compresser plusieurs fichiers, vous avez besoin de faire une de deux choses:Si vous prenez la première option, à l'aide de l'existant
tar
format de combiner les fichiers, il vous sera la production d'un.tar.Z
fichier qui peut être extraite avec des outils standard, donc c'est une bonne façon d'aller. Vous pouvez utiliserlibtar
pour générer untar
archive.J'ai construit un wrapper autour de minizip en ajoutant quelques fonctionnalités que j'avais besoin et de le rendre plus agréable à utiliser. Est l'utilisation de la dernière c++11 et est développé à l'aide de Visual Studio 2013 (doit être portable, mais je n'ai pas testé sur unix)
Il y a une description complète ici: https://github.com/sebastiandev/zipper
mais est aussi simple que vous pouvez obtenir:
vous pouvez compresser des dossiers complets, des ruisseaux, des vecteurs, etc. Également une fonctionnalité intéressante est de tout faire entièrement en mémoire.