如何在Windows Phone 7中提取zip文件?

时间:2011-04-26 03:52:31

标签: silverlight windows-phone-7 sharpziplib

我的Windows Phone 7项目中有一个zip文件。我已将Build Action to Content和Copy to output目录设置为Always。 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()。任何人都可以让我知道我错过了什么?我该怎么做才能避免它?

3 个答案:

答案 0 :(得分: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文件列表的更多信息,请查看this blog post

答案 1 :(得分:4)

答案 2 :(得分:1)

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

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