.net DotNetZip使用提供的代码示例提取流问题

.net DotNetZip使用提供的代码示例提取流问题,.net,vb.net-2010,dotnetzip,.net,Vb.net 2010,Dotnetzip,我试图打开一个zip文件,并将密码和256 AES加密的文本文件提取到一个流中,这样我就可以在不将文本副本放入驱动器的情况下读取。如果我正确理解了我想要做的事情,使用流将完成这一点。我对代码不是很有经验,所以我使用了我在DontNetZip网站上找到的示例,下面就是。 问题有两个方面,在处理时会抛出两个错误,我希望有人能帮助解决这些问题 1第一个错误出现在第三行-“使用s作为CrcCalculatorStream=e1.OpenReader”错误是“对象引用未设置为对象的实例”我尝试过去清理和更

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

1第一个错误出现在第三行-“使用s作为CrcCalculatorStream=e1.OpenReader”错误是“对象引用未设置为对象的实例”我尝试过去清理和更新,但它仍然在那条线上崩溃

2第二个错误出现在循环后面的一行——“If(s.Crc32 e1.Crc32)Then”,该错误在s.Crc32下是一个扭曲的行,表示Crc32不是CrcCalculatorStream的成员,在e1.Crc32下也是一个类似的错误,它不是Ionic.zip.zipEntry的成员

代码是从该链接复制的

有人能帮我看完代码,看看我能不能得到我想要的结果,也就是把文本文件的内容写成字符串,这样我就可以读了

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
使用zip作为新ZipFile(ZipFileToRead)
尺寸e1为ZipEntry=zip.Item(“标高.mp3”)
使用s作为Ionic.Zlib.CrcCalculatorStream=e1.OpenReader(密码)
作为整数的Dim n
作为字节()的Dim缓冲区=新字节(4096){}
Dim totalBytesRead为整数=0
做
n=s.Read(缓冲区,0,缓冲区长度)
totalBytesRead=(totalBytesRead+n)
循环时间(n>0)
如果(s.Crc32 e1.Crc32),则
抛出新异常(String.Format(“Zip项未通过CRC检查。(0x{0:X8}!=0x{1:X8})”,s.Crc32,e1.Crc32))
如果结束
如果(totalBytesRead e1.UncompressedSize),则
抛出新异常(String.Format(“我们读取了意外的字节数({0}!={1})”,TotalByteRead,e1.UncompressedSize))
如果结束
终端使用

结束使用

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

作为字符串的Dim str

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

我已经对我提出的问题进行了排序,对象引用异常是由于文件没有完整路径造成的。。。。因此它是空的,crc32被更改为Crc,然后就可以了。但现在我真的需要帮助。问这个问题我觉得很傻,但我如何获得数据??这是实际文本文件的内容!我想以一个包含文件内容的字符串结束。那有可能吗。谢谢