在我的 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()。希望有人可以让我知道我错过了什么?我怎样才能避免它?
签出此实用程序,它会帮助你理解。
回答1:
如果你知道你想要的 Zip 文件。你就不需要使用另一个库,你可以使用 App.GetResourceStream phone 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 的文件列表,参考 博客文章.
我使用 SharpZipLib 的 SL 端口做过,请参阅 http://slsharpziplib.codeplex.com/
有很多关于如何使用的代码示例,源代码中也会有快速入门指导。 – http://slsharpziplib.codeplex.com/SourceControl/changeset/view/75568#1416103