2011-11-29 18 views
6

Estoy usando SharpZipLib en un proyecto y me pregunto si es posible usarlo para mirar dentro de un archivo zip, y si uno de los archivos dentro tiene datos modificados en un rango Estoy buscando para luego recoger ese archivo y copiarlo a un nuevo directorio? ¿Alguien sabe si esto es posible?SharpZipLib Examinar y seleccionar el contenido de un archivo ZIP

+0

Estoy seguro de que es posible. Tendría que abrir el archivo y mirar el contenido de la colección de archivos. Dependiendo de si la última información de modificación se hace pública, determinará si podrá hacer todo lo demás. No hago la razón por la que no se hará público, la biblioteca en la que SharpZibLib se basa permite eso, por lo que también debería permitirlo. De lo contrario, siempre hay otras soluciones que lo permitan. –

Respuesta

8

Sí, es posible enumerar los archivos de un archivo zip con SharpZipLib. También puede seleccionar archivos del archivo zip y copiarlos a un directorio en su disco.

Aquí es un pequeño ejemplo:

using (var fs = new FileStream(@"c:\temp\test.zip", FileMode.Open, FileAccess.Read)) 
{ 
    using (var zf = new ZipFile(fs)) 
    { 
    foreach (ZipEntry ze in zf) 
    { 
     if (ze.IsDirectory) 
     continue; 

     Console.Out.WriteLine(ze.Name);    

     using (Stream s = zf.GetInputStream(ze)) 
     { 
     byte[] buf = new byte[4096]; 
     // Analyze file in memory using MemoryStream. 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      StreamUtils.Copy(s, ms, buf); 
     } 
     // Uncomment the following lines to store the file 
     // on disk. 
     /*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name)) 
     { 
      StreamUtils.Copy(s, fs, buf); 
     }*/ 
     }    
    } 
    } 
} 

En el ejemplo anterior utilizo un MemoryStream para almacenar el ZipEntry en la memoria (para el análisis adicional). También puede almacenar el ZipEntry (si cumple con ciertos criterios) en el disco.

Espero, esto ayuda.

+0

Esto es exactamente lo que estaba buscando, muy apreciado !! – DukeOfMarmalade

Cuestiones relacionadas