Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Calculator

0

94
Views
DotNetZip doesn't read all entries from zip stored at azure blob storage

I have a zip stored in azure blob storage which I'm streaming it locally and iterating its entries.

I'm getting the stream like that:

BlobClient blob = _blobServiceClientProp.GetBlobContainerClient(blobExtractionSource.ContainerName)
                                        .GetBlobClient(blobExtractionSource.BlobName);
            
Stream zipStream = await blob.OpenReadAsync().ConfigureAwait(false);

The stream length is valid (8890655642 bytes).

Using DotNetZip 1.16, I'm reading from the zip stream:

ZipFile zipFile = ZipFile.Read(zipStream);

The problem is that I'm getting wrong number of entries. According to DotNetZip, I have 41082 entries in the zip which is wrong. I checked the number of entries both by the Entries property (zipFile.Entries) and also by iterating and count them manually.

If I switch to IO.Compression.ZipArchive and iterating the zip entries, IO.Compression.ZipArchive is telling me I have 85,413 entries in the zip, which is the right number of entries.

Any suggestions how can I still work with DotNetZip and make it get the right number of entries?

Note that when reading from the same zip locally (after I manually download it) with same version of DotNetZip, I successfully get all the entries.

10 months ago · Santiago Trujillo
1 answers
Answer question

0

Through ZipArchive we could able to pull off the exact number. Below is the code that worked for us.

var stream = await blobClient.OpenReadAsync();
using ZipArchive zip = new ZipArchive(stream, ZipArchiveMode.Read);
Console.WriteLine(zip.Entries.Count);
10 months ago · Santiago Trujillo Report
Answer question
Find remote jobs