3

我的 Windows Phone 7 项目中有一个 zip 文件。我已将构建操作设置为内容并将复制到输出目录设置为始终。zip 文件包含文件夹结构。我希望完全复制它,就像它在我的电话项目中一样。我为此使用 SharpZipLib。这是代码:-

 Stream stremInfo = Application.GetResourceStream(new Uri("xip.zip", UriKind.Relative)).Stream;



        new FastZip(). ExtractZip(stremInfo,
            "",FastZip.Overwrite.Always,null,null,null,true,true);

但是,当调用 ExractZip 时出现错误。我得到的例外是“ MethodAccessException”。无法调用GetFullPath()。谁能让我知道我错过了什么?我能做些什么来避免它?

4

3 回答 3

7

如果您知道要从 Zip 中取出哪些文件,则无需使用其他库。您可以使用 App.GetResourceStream 电话 API 进入 Zip 并获取文件。

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    WebClient client = new WebClient();
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
    client.OpenReadAsync(new Uri("http://www.foo.com/pictures.zip"));
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    StreamResourceInfo info = new StreamResourceInfo(e.Result,"");
    StreamResourceInfo pic = App.GetResourceStream(info, new Uri("IMG_1001.jpg", UriKind.Relative));

    BitmapImage bitmap = new BitmapImage();
    bitmap.SetSource(pic.Stream);
    img.Source = bitmap;
}

有关从 Zip 读取文件列表的更多信息,请查看此博客文章

于 2011-04-26T18:12:57.930 回答
4

看看这个实用程序,它可以帮助你。

http://www.sharpgis.net/post/2009/04/22/REALLY-small-unzip-utility-for-Silverlight.aspx

于 2011-04-26T04:15:32.700 回答
1

我已经使用 SharpZipLib 的 SL 端口来执行此操作 - 请参阅http://slsharpziplib.codeplex.com/

有很多示例代码可用于如何使用它 - 以及它们的源代码中的一个很好的快速入门 - http://slsharpziplib.codeplex.com/SourceControl/changeset/view/75568#1416103

于 2011-04-26T06:35:31.407 回答