Comment compresser un fichier (gzip) à l'aide de bibliothèques boost C++
Im essayant de compresser un fichier en utilisant la bibliothèque boost (gzip).
Ses une tâche simple: supposons que j'ai le fichier data.xml et j'ai besoin de le compresser à data.xml.gz. Je peux même utiliser la compression par défaut des valeurs, n'a pas d'importance.
J'ai essayé de chercher sur google et pages BOOST mais sans succès.
J'ai le texte suivant:
bool SyncFrequencyHistory::frequencyHistoryCompressFile(void)
{
printf("\r\n===== ACTION: frequencyHistoryCompressFile =====\r\n");
std::ifstream inStream(FREQUENCY_HISTORY_FILE, std::ios_base::in);
std::ofstream outStream(FREQUENCY_HISTORY_FILE_GZIP, std::ios_base::out);
boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
out.push(boost::iostreams::gzip_compressor());
out.push(outStream);
boost::iostreams::copy(in, out);
return true;
}
FREQUENCY_HISTORY_FILE avoir le plein emplacement du fichier XML
FREQUENCY_HISTORY_FILE_GZIP avoir le plein emplacement pour le XML.GZ fichier
Je sais que presque tout le code est mauvais, mais je n'ai aucune idée à qui écrire de la bonne façon.
Est en cours d'exécution gzip comme une commande externe n'est pas une option?
Ce qui se passe lorsque vous exécutez cette?
Ce qui se passe lorsque vous exécutez cette?
OriginalL'auteur Vasco Baptista | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
Basé sur les éléments suivants tutoriel, je crois que votre code doit être:
Fondamentalement, vous avez lu l'entrée, compresser et enregistre le dat
Ce code va créer un fichier zip avec des données compressées, et non pas en tant que fichier compressé.
OriginalL'auteur Mr. Beer
J'ai déjà résolu! J'ai changé pour une bibliothèque ZLIB.
OriginalL'auteur Vasco Baptista
Ce code fonctionne, vous avez juste besoin de spécifier le type de binaire du flux de sortie:
std::ios_base::binary
.OriginalL'auteur Anton Shmelev