Existe alguma maneira em .Net (C #) para extrair dados de um arquivo zip sem descompactar o arquivo completo?
Simplesmente, possivelmente, desejo extrair dados (arquivo) do início de um arquivo zip, obviamente isso depende se o algoritmo de compactação compactar o arquivo em uma ordem determinística.
c#
compression
zip
data-compression
AwkwardCoder
fonte
fonte
Respostas:
DotNetZip é seu amigo aqui.
Tão fácil quanto:
(você também pode extrair para um arquivo ou outros destinos).
Ler o índice do arquivo zip é tão fácil quanto:
Editado para Nota: DotNetZip costumava morar no Codeplex. Codeplex foi encerrado. O arquivo antigo ainda está disponível no Codeplex . Parece que o código migrou para o Github:
fonte
Com .Net Framework 4.5 (usando ZipArchive ):
Encontre "myfile" em zipfile e extraia-o.
fonte
System.IO.Compression.dll
eSystem.IO.Compression.FileSystem.dll
Algo assim irá listar e extrair os arquivos um por um, se você quiser usar o SharpZipLib:
Com base neste exemplo: conteúdo dentro do arquivo zip
fonte
Veja como um arquivo de texto UTF8 pode ser lido de um arquivo zip em uma variável de string (.NET Framework 4.5 e superior):
fonte
Os arquivos Zip possuem um índice. Cada utilitário zip deve ter a capacidade de consultar apenas o TOC. Ou você pode usar um programa de linha de comando como 7zip -t para imprimir o índice e redirecioná-lo para um arquivo de texto.
fonte
Nesse caso, você precisará analisar as entradas do cabeçalho local zip. Cada arquivo, armazenado em um arquivo zip, tem uma entrada de Cabeçalho de Arquivo Local anterior, que (normalmente) contém informações suficientes para descompactação. Geralmente, você pode fazer uma análise simples de tais entradas no fluxo, selecionar o arquivo necessário, copiar o cabeçalho + dados do arquivo compactado para outro arquivo e chame unzip nessa parte (se você não quiser lidar com todo o código de descompressão Zip ou biblioteca).
fonte