Использование памяти DotNetZip при использовании AddEntry - PullRequest
0 голосов
/ 14 июня 2019

Я использую DotNetZip для записи файлов в zip-файл, я выбрал этот инструмент, потому что он решает некоторые специфические проблемы, которые другие инструменты, такие как ZipArchive, не решают.

Я сохраняю данные в файл через ZipFile.AddEntry () и ZipFile.AddFile (), основываясь на том, находятся ли данные, которые я добавляю, уже на диске. AddFile () работает хорошо, однако AddEntry () вызывает увеличение использования памяти в объекте DotNetZip ZipFile. Это в конечном итоге вызывает исключение нехватки памяти. Регулярный вызов Save () не решает проблему (я надеялся, что это очистит буфер).

Как предотвратить постоянно увеличивающееся использование памяти при использовании AddEntry ()?

Using zipFile = New ZipFile(exportFileName)
    zipFile.Password = password
    zipFile.Encryption = EncryptionAlgorithm.WinZipAes256

    For Each currData in dataToSave
        Dim entryName = currData.Name
        Dim entryData = GetDataFromSource(currData.Name)
        zipFile.AddEntry(entryName, entryData)
    Next

    zipFile.Save()
End Using
...