Tengo un zip almacenado en Azure Blob Storage que lo estoy transmitiendo localmente e iterando sus entradas.
Estoy recibiendo la transmisión así:
BlobClient blob = _blobServiceClientProp.GetBlobContainerClient(blobExtractionSource.ContainerName) .GetBlobClient(blobExtractionSource.BlobName); Stream zipStream = await blob.OpenReadAsync().ConfigureAwait(false);
La longitud del flujo es válida (8890655642 bytes).
Usando DotNetZip 1.16, estoy leyendo de la transmisión zip:
ZipFile zipFile = ZipFile.Read(zipStream);
El problema es que estoy obteniendo un número incorrecto de entradas. Según DotNetZip, tengo 41082 entradas en el zip, lo cual es incorrecto. Verifiqué el número de entradas tanto por la propiedad Entradas (zipFile.Entries) como también iterándolas y contándolas manualmente.
Si cambio a IO.Compression.ZipArchive
e itero las entradas zip, IO.Compression.ZipArchive
me dice que tengo 85 413 entradas en el zip, que es la cantidad correcta de entradas.
¿Alguna sugerencia sobre cómo puedo seguir trabajando con DotNetZip y hacer que obtenga el número correcto de entradas?
Tenga en cuenta que al leer desde el mismo zip localmente (después de descargarlo manualmente) con la misma versión de DotNetZip, obtengo todas las entradas con éxito.
A través de ZipArchive pudimos obtener el número exacto. A continuación se muestra el código que funcionó para nosotros.
var stream = await blobClient.OpenReadAsync(); using ZipArchive zip = new ZipArchive(stream, ZipArchiveMode.Read); Console.WriteLine(zip.Entries.Count);