descomprimir - ¿Cómo se descarga y se extrae un archivo comprimido con C#?
no se puede abrir como un archivo comprimido 7 zip (5)
Necesito descargar periódicamente, extraer y guardar los contenidos de http://data.dot.state.mn.us/dds/det_sample.xml.gz en el disco. ¿Alguien tiene experiencia descargando archivos comprimidos con C #?
La clase GZipStream puede ser lo que quieras.
Puede usar WebClient en System.Net para descargar:
WebClient Client = new WebClient ();
Client.DownloadFile("http://data.dot.state.mn.us/dds/det_sample.xml.gz", " C:/mygzipfile.gz");
luego usa #ziplib para extraer
Editar: o GZipStream ... se olvidó de eso
Simplemente use la clase HttpWebRequest en el espacio de nombres System.Net para solicitar el archivo y descargarlo. A continuación, utilice la clase GZipStream en el espacio de nombres System.IO.Compression para extraer el contenido a la ubicación que especifique. Ellos proporcionan ejemplos.
Pruebe SharpZipLib , una biblioteca basada en C # para comprimir y descomprimir archivos usando gzip / zip.
El uso de la muestra se puede encontrar en esta publicación de blog :
using ICSharpCode.SharpZipLib.Zip;
FastZip fz = new FastZip();
fz.ExtractZip(zipFile, targetDirectory,"");
Para comprimir:
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);
}
}
Descomprimir:
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);
}
}
}
}
Tomado de una publicación que escribí el año pasado que muestra cómo descomprimir un archivo gzip usando C # y la clase incorporada GZipStream. http://blogs.msdn.com/miah/archive/2007/09/05/zipping-files.aspx
En cuanto a la descarga, puede utilizar las clases estándar WebRequest o WebClient en .NET.