1

我正在尝试打开一个 zip 文件并将密码和 256 AES 加密文本文件提取到一个流中,无需将文本副本放入驱动器即可读取。如果我理解我想要正确做的事情,使用流就可以完成。我对代码不是很熟悉,所以我使用了我在下面的 DontNetZip 网站上找到的示例。问题是 2 倍,处理时会引发 2 个错误,我希望有人可以帮助解决这些问题。

1 第一个错误发生在第 3 行 - “Using s As CrcCalculatorStream = e1.OpenReader”,错误是“对象引用未设置为对象的实例。' 我试过去清除和新的,但它仍然在那条线上崩溃。

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

有人可以帮我查看代码,看看我是否可以得到我之后的结果,即将文本文件的内容放在一个字符串中,以便我可以阅读它

PS 我在我的真实程序中编辑了对文件的引用和正确的 zip 名称,唯一的补充是密码。

谢谢

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

结束使用

4

1 回答 1

2

我也设法解决了这个问题,我只是觉得它可能对某人有用。

将 str 调暗为字符串

                    Using s As Ionic.Crc.CrcCalculatorStream = e.OpenReader(Password)
                        Dim sr As StreamReader = New StreamReader(s)
                        str = sr.ReadToEnd()
                    End Using
于 2012-07-12T20:44:52.883 回答