ICSharpZipLib - проблема с разархивированием файла - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть приложение в ASP.NET, где пользователь может загрузить ZIP-файл. Я пытаюсь извлечь файл с помощью ICSharpZipLib (я также пытался DotNetZip, но была та же проблема).

Этот zip-файл содержит один XML-документ (9 КБ перед сжатием).

Когда я открываю этот файл с другими приложениями на моем рабочем столе (7zip, windows explorer), кажется, все в порядке. Мой метод распаковки выдает System.OutOfMemoryException, и я понятия не имею, почему это так. Когда я отладил свой метод распаковки, я заметил, что свойство Length zipInputStreams выбрасывает Exception и недоступно:

Stream UnZipSingleFile(Stream memoryStream)
        {

            var zipInputStream = new ZipInputStream(memoryStream);

            memoryStream.Position = 0;

            zipInputStream.GetNextEntry();

            MemoryStream unzippedStream = new MemoryStream();

            int len;
            byte[] buf = new byte[4096];
            while ((len = zipInputStream.Read(buf, 0, buf.Length)) > 0)
            {
                unzippedStream.Write(buf, 0, len);
            }

            unzippedStream.Position = 0;
            memoryStream.Position = 0;

            return unzippedStream;
    }

и вот как я получаю строку unzippedStream:

string GetString()
        {
            var reader = new StreamReader(unzippedStream);
            var result = reader.ReadToEnd();
            unzippedStream.Position = 0;
            return result;
        }

1 Ответ

0 голосов
/ 21 февраля 2012

Из их вики:

"Sharpzip поддерживает файлы Zip с использованием как сохраненных, так и сжатых методов сжатия, а также поддерживает старый стиль (PKZIP 2.0) и шифрование AES"

Вы уверены, что формат загруженного zip-файла приемлем для SharpZipLib?

...