我正在尝试打开一个 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
结束使用