Ich arbeite an einem Projekt mit C ++, Boost und Qt. Ich verstehe, wie man einzelne Dateien und Bytestreams komprimiert, indem man zum Beispiel die qCompress () - Funktion in Qt verwendet.
Wie komprimiere ich ein Verzeichnis mit mehreren Dateien, einschließlich Unterverzeichnissen? Ich suche nach einer plattformübergreifenden (Mac, Win, Linux) Lösung; Ich würde es vorziehen, nicht eine Menge neuer Prozesse auszulösen.
Gibt es eine Standardmethode, um Bytestreams aus mehreren Dateien in ein gezipptes Archiv zu kombinieren, oder gibt es vielleicht eine Convenience-Funktion oder -Methode, die in der Boost iostream-Bibliothek verfügbar wäre?
Vielen Dank für die Hilfe.
Update : Die QuaZip-Bibliothek sieht wirklich gut aus. Es gibt ein Beispiel im Download-Paket (im Verzeichnis "Tests"), das sehr deutlich zeigt, wie man ein Verzeichnis von Dateien hochschnellt.
Update 2 : Nachdem ich diese Aufgabe in meiner Linux-Build-Umgebung abgeschlossen hatte, stellte ich fest, dass QuaZip mit dem Visual Studio-Compiler überhaupt nicht funktioniert. Es mag möglich sein, all diese Compiler-Fehler anzugehen, aber ein Wort der Vorsicht für jeden, der diesen Weg sucht.
Ich habe die folgenden zwei Bibliotheken gefunden:
Ah, und natürlich habe ich diese Seiten von diesem gerippt Qt Mailingliste Frage zum Zippen / Entpacken von Verzeichnissen:)
Nur für den Rekord ...
Heute musste ich in Visual C ++ etwas sehr ähnliches tun. (Obwohl gewünscht, die Möglichkeit zu erhalten, das Projekt auf anderen Plattformen zu kompilieren; jedoch bevorzugt Qt nicht nur für diesen Zweck zu übernehmen.)
Beendet mit der Minizip -Bibliothek. Es ist in Plain C geschrieben, aber es war ein Kinderspiel, einen einfachen C ++ - Wrapper zu erstellen, und das Endergebnis funktioniert großartig, zumindest für meine Zwecke.
Ich habe QuaZIP 0.4.3 unter Windows mit VisualStudio 2010 ausprobiert - es gibt immer noch Probleme, die aber leicht gelöst werden können.
Ich habe einen Wrapper um minizip gebaut, indem ich einige Funktionen hinzugefügt habe, die ich brauchte und es netter machte, sie zu benutzen. Es verwendet die neueste Version von C ++ 11 und wird mit Visual Studio 2013 entwickelt. Daher sollte es sofort einsatzbereit für Sie sein.
Es gibt eine vollständige Beschreibung hier: Ссылка
Sie können ganze Ordner, Streams, Vektoren usw. zippen. Ein nettes Feature ist auch, alles komplett im Speicher abzulegen.
Tags und Links c++ qt boost zlib compression