Извлечение DotNetZip для потоковой передачи проблем с использованием предоставленного примера кода

Я пытаюсь открыть zip-файл и извлечь пароль и зашифрованный текстовый файл 256 AES в поток, который я могу прочитать БЕЗ размещения копии текста на диске. Если я правильно понимаю, что я хочу сделать, использование потока сделает это. Я не очень разбираюсь в коде, поэтому я использую пример, который я нашел на сайте DontNetZip, который находится ниже. Проблема в 2 раза, выдает 2 ошибки при обработке, я надеялся, что кто-то может помочь с этими.

1 первая ошибка возникает в 3-й строке — «Использование s As CrcCalculatorStream = e1.OpenReader». Ошибка: «Ссылка на объект не указывает на экземпляр объекта. ' Я пробовал declearing и new, и все равно он падает на этой строке.

2 вторая ошибка находится в строке после цикла - "If (s.Crc32 ‹> e1.Crc32) Then" и ошибка представляет собой волнистую строку под s.Crc32 и говорит о том, что Crc32 не является членом CrcCalculatorStream , a аналогичная ошибка в e1.Crc32, который не является членом Ionic.zip.zipEntry

Код скопирован с этой ссылки http://cheeso.members.winisp.net/DotNetZipHelp/html/4ef6405c-33ff-a8aa-1731-def3ec5cac24.htm

Может ли кто-нибудь помочь мне пройти через код, чтобы увидеть, могу ли я получить результат, который Im после, то есть иметь содержимое текстового файла в строке, чтобы я мог его прочитать

PS Я в своей реальной программе редактировал ссылки на файл и правильное имя зипа, единственное дополнение - пароль.

Спасибо

Using zip As New ZipFile(ZipFileToRead)
Dim e1 As ZipEntry = zip.Item("Elevation.mp3")
Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader(password)
    Dim n As Integer
    Dim buffer As Byte() = New Byte(4096) {}
    Dim totalBytesRead As Integer = 0
    Do
        n = s.Read(buffer, 0, buffer.Length)
        totalBytesRead = (totalBytesRead + n)
    Loop While (n > 0)
    If (s.Crc32 <> e1.Crc32) Then
        Throw New Exception(String.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32))
    End If
    If (totalBytesRead <> e1.UncompressedSize) Then
        Throw New Exception(String.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize))
    End If
End Using

Завершить использование


person user1500403    schedule 12.07.2012    source источник
comment
Я отсортировал те проблемы, которые я поднял, исключение ссылки на объект было связано с файлом без полного пути .... следовательно, он был нулевым, а crc32 был изменен на Crc, и тогда все было в порядке. НО СЕЙЧАС МНЕ ОЧЕНЬ НУЖНА ПОМОЩЬ. Я чувствую себя глупо, спрашивая об этом, но как я могу получить данные ?? это содержимое фактического текстового файла! Я хочу получить строку, содержащую содержимое файла. Это возможно. Спасибо   -  person user1500403    schedule 12.07.2012


Ответы (1)


С этим я тоже разобрался, просто подумал, может кому пригодится.

Dim str как строка

                    Using s As Ionic.Crc.CrcCalculatorStream = e.OpenReader(Password)
                        Dim sr As StreamReader = New StreamReader(s)
                        str = sr.ReadToEnd()
                    End Using
person user1500403    schedule 12.07.2012