decompress - gzipstream multiple files c#




Comment télécharger et extraire un fichier gzippé avec C#? (4)

Je dois télécharger, extraire et sauvegarder périodiquement le contenu de http://data.dot.state.mn.us/dds/det_sample.xml.gz sur le disque. Quelqu'un a l'expérience de télécharger des fichiers gzippés avec C #?


La classe GZipStream peut être ce que vous voulez.


Utilisez simplement la classe HttpWebRequest dans l'espace de noms System.Net pour demander le fichier et le télécharger. Utilisez ensuite la classe GZipStream dans l'espace de noms System.IO.Compression pour extraire le contenu à l'emplacement que vous spécifiez. Ils fournissent des exemples.


Essayez le SharpZipLib , une bibliothèque basée sur C # pour compresser et décompresser des fichiers en utilisant gzip / zip.

L'exemple d'utilisation peut être trouvé sur ce blog :

using ICSharpCode.SharpZipLib.Zip;

FastZip fz = new FastZip();       
fz.ExtractZip(zipFile, targetDirectory,"");

Pour compresser:

using (FileStream fStream = new FileStream(@"C:\test.docx.gzip", 
FileMode.Create, FileAccess.Write)) {
    using (GZipStream zipStream = new GZipStream(fStream, 
    CompressionMode.Compress)) {
        byte[] inputfile = File.ReadAllBytes(@"c:\test.docx");
        zipStream.Write(inputfile, 0, inputfile.Length);
    }
}

Pour décompresser:

using (FileStream fInStream = new FileStream(@"c:\test.docx.gz", 
FileMode.Open, FileAccess.Read)) {
    using (GZipStream zipStream = new GZipStream(fInStream, CompressionMode.Decompress)) {   
        using (FileStream fOutStream = new FileStream(@"c:\test1.docx", 
        FileMode.Create, FileAccess.Write)) {
            byte[] tempBytes = new byte[4096];
            int i;
            while ((i = zipStream.Read(tempBytes, 0, tempBytes.Length)) != 0) {
                fOutStream.Write(tempBytes, 0, i);
            }
        }
    }
}

Extrait d'un article que j'ai écrit l'année dernière qui montre comment décompresser un fichier gzip en utilisant C # et la classe GZipStream intégrée. http://blogs.msdn.com/miah/archive/2007/09/05/zipping-files.aspx

Pour le télécharger, vous pouvez utiliser les classes WebRequest standard ou WebClient dans .NET.





gzip