0

我想要实现的是使应用程序能够提取大型远程文件(从 ftp 或 http),而无需完全下载它,并且在网络故障的情况下可以恢复提取。

按照这个例子

http://wiki.sharpdevelop.net/SharpZipLib-Zip-Samples.ashx#Unpack_a_zip_using_ZipInputStream_eg_for_Unseekable_input_streams_5

我可以提取文件,但如果出现网络故障,我无法恢复提取。我尝试使用 ZipInputStream.Skip(length) ,其中“length”是本地下载/解压缩文件的大小,但它似乎不起作用。它抛出异常,如:

在 ICSharpCode.SharpZipLib.dll 损坏的未压缩块中发生了“ICSharpCode.SharpZipLib.SharpZipBaseException”类型的第一次机会异常

任何想法?是否有可能实现这一目标?

4

1 回答 1

0

在他们的论坛上从 Sharpzlib 团队那里得到了答案。

这样做是可能的。这很简单。当实例化一个新的 ZipInputStream 时,您需要传递一个“专门的”流,它将包装一个 FTP 连接和一个由 FtpWebResponse 获得的流。

sharpzlib 团队在他们的 wiki 站点上添加了这个作为示例。看最后一个教程

https://github.com/icsharpcode/SharpZipLib/wiki/Zip-Samples

于 2012-09-15T16:06:36.790 回答