Tengo un montón de archivos ZIP que necesitan una reorganización y extracción jerárquica desesperada. Lo que puedo hacer, actualmente, es crear la estructura del directorio y mover los archivos zip a la ubicación correcta. El queso místico que me falta es la parte que extrae los archivos del archivo ZIP.Extraer archivos de un archivo comprimido mediante programación mediante C# y System.IO.Packaging
He visto los artículos de MSDN en la clase ZipArchive
y los entiendo razonablemente bien. También he visto el VBScript ways to extract. Esta no es una clase compleja, por lo que extraer cosas debería ser bastante simple. De hecho, funciona "principalmente". He incluido mi código actual a continuación para referencia.
using (ZipPackage package = (ZipPackage)Package.Open(@"..\..\test.zip", FileMode.Open, FileAccess.Read))
{
PackagePartCollection packageParts = package.GetParts();
foreach (PackageRelationship relation in packageParts)
{
//Do Stuff but never gets here since packageParts is empty.
}
}
El problema parece estar en algún lugar del GetParts
(o Obtener Cualquier cosa para el caso). Parece que el paquete, mientras está abierto, está vacío. Profundizando más, el depurador muestra que el miembro privado _zipArchive muestra que en realidad tiene partes. Partes con los nombres correctos y todo. ¿Por qué la función GetParts
no los recuperará? Intenté abrir el archivo ZipArchive y eso no ayudó. Grrr.
FYI, he publicado una solicitud en MS Connect para agregar compatibilidad con el archivo ZIP genérico. También puede votar en https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=477393 –