J'utilise l'objet stream de filtrage boost pour lire les fichiers gzippés. Fonctionne très bien! Je voudrais afficher une barre de progression pour la quantité de fichier qui a été traitée. J'ai besoin de trouver la taille du fichier non compressé d'entrée. Est-ce que le décompresseur gzip a accès à la taille du fichier d'origine à partir du fichier gzippé? Je n'ai pas pu le trouver sur la page boost gzip_decompressor reference. Vraiment le dialogue de progrès est l'objectif, est-il un autre moyen de comprendre la position dans le fichier compressé?boost filtering_istream gzip_decompressor taille de fichier non compressé
// gets compressed file size, need uncompressed size
boost::uintmax_t fs = boost::filesystem::file_size (
boost::filesystem::path (fname)
);
std::ifstream file (fname, std::ios_base::in | std::ios_base::binary);
boost::iostreams::filtering_istream in;
in.push (boost::iostreams::gzip_decompressor());
in.push (file);
std::string line;
size_t bytes_read = 0;
while (in)
{
std::getline (in, line);
bytes_read += line.size();
// progress dlg with bytes_read/uncompressed size
}
Il est assez facile de chercher à la fin du fichier et lire la taille. Je suppose que je ferai ça. Merci. – Dan
Ou, vous pouvez modifier boost pour ajouter cette information et soumettre un correctif pour cela. Alors tout le monde profite du travail. – KeithB