Archiv mit C++ erstellen
-
Hallo zusammen,
wiess jemand wie man in C++ *.zip oder *.tar archiv ertellt?
Vielen Danke für ihre Antwort.
-
Gibt's da nicht die zlib?
-
danke für den Tipp.
Ich werde mal in diese Richtung suchen.
-
Für einfache unkomprimierte Archive braucht es keine große Lib. Das kann man sich schnell selber basteln wenn man sich die Formatbeschreibungen holt. Brauchst du Kompression, dann würde ich allerdings nicht das Rad neu erfinden.
-
[quote="Walli"]Für einfache unkomprimierte Archive braucht es keine große Lib. Das kann man sich schnell selber basteln wenn man sich die Formatbeschreibungen holt.
ahan , und wie geht das?
Hast du vielleicht ein Beispiel oder ein Tutorial zu empfehlen?
-
Zum Lesen von Zip-Archiven kenn ich jetzt keine fertige Lib (aber gibt sicher genug Beispiel-Sources), aber das Auslesen ist recht simpel. Die komprimierten Daten (falls komprimiert) kann man danach mit der passenden Kompressionstechnik recht leicht entpacken, da es für die ganzen Verfahren ja Libs gibt. Eine wäre die bereits genannte zlib (untersützt allerdings nur deflate).
-
Die zlib ist doch "nur" zum packen und entpacken im Zip-Format. Zip-Archive sind doch dann wieder was anderes, nämlich der nächste Step, den die zlib meines Wissens nicht bereitstellt.
Zip komprimieren würde ich nicht selbst entwickeln. Warum das Rad neu erfinden? zlib nehmen und fertig. Ist kostenlos, frei un dplatformunabhängig.
-
Akakpo,abalo schrieb:
Hast du vielleicht ein Beispiel oder ein Tutorial zu empfehlen?
Lade dir auf wotsit.org die Spezifikation des zip-Formates (oder tar) runter und implementiere das einfach runter. Das habe ich auf der Arbeit auch schon mal für unkomprimierte zips gemacht. Ist relativ einfach und eine gute Übung. Es gibt bestimmt auch fertige Klassen dafür, die man sich anpassen kann. Ich meine so etwas mal auf codeproject.com gesehen zu haben.
-
Wenn du kein Mehrdateien-Archiv benötigst, dann sind imho die Boost.Iostreams-Filter sehr elegant. Damit ist das Dateihandling praktisch genauso wie in der Standardbibliothek, die Komprimierung ist unsichtbar. Ich glaube zlib und bzip2 sind schon eingebaut (natürlich brauchst du dann trotzdem noch die entsprechenden Bibliotheken wie libzlib und libbz2 o.ä.).