¿Hay alguna forma en .Net (C #) para extraer datos de un archivo zip sin descomprimir el archivo completo?
Simplemente, posiblemente quiera extraer datos (archivo) desde el inicio de un archivo zip, obviamente, esto depende de si el algoritmo de compresión comprime el archivo en un orden determinista.
c#
compression
zip
data-compression
AwkwardCoder
fuente
fuente
Respuestas:
DotNetZip es tu amigo aquí.
Tan fácil como:
(también puede extraer a un archivo u otros destinos).
Leer la tabla de contenido del archivo zip es tan fácil como:
Editado para Nota: DotNetZip solía vivir en Codeplex. Codeplex se ha cerrado. El archivo antiguo todavía está disponible en Codeplex . Parece que el código se ha migrado a Github:
fuente
Con .Net Framework 4.5 (usando ZipArchive ):
Busque "myfile" en zipfile y extráigalo.
fuente
System.IO.Compression.dll
ySystem.IO.Compression.FileSystem.dll
Algo como esto enumerará y extraerá los archivos uno por uno, si desea utilizar SharpZipLib:
Basado en este ejemplo: contenido dentro del archivo zip
fuente
Así es como se puede leer un archivo de texto UTF8 desde un archivo zip en una variable de cadena (.NET Framework 4.5 y superior):
fuente
Los archivos zip tienen una tabla de contenido. Cada utilidad zip debe tener la capacidad de consultar solo la tabla de contenido. O puede utilizar un programa de línea de comandos como 7zip -t para imprimir la tabla de contenido y redirigirla a un archivo de texto.
fuente
En tal caso, deberá analizar las entradas del encabezado local zip. Cada archivo, almacenado en un archivo zip, tiene una entrada de encabezado de archivo local anterior, que (normalmente) contiene suficiente información para la descompresión.En general, puede realizar un análisis simple de dichas entradas en la secuencia, seleccionar el archivo necesario, copiar el encabezado + los datos del archivo comprimido a otro file, y llame a descomprimir en esa parte (si no desea tratar con todo el código de descompresión Zip o la biblioteca).
fuente