我遇到了这个问题 - 显然,我做错了。
首先,我通过WebClient下载一个zip文件并将其存储到IsolatedStorage:
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!isf.DirectoryExists("AppData")) isf.CreateDirectory("AppData");
using (StreamWriter sw = new StreamWriter(new IsolatedStorageFileStream("AppData\\" + FileName, FileMode.OpenOrCreate, isf)))
{
sw.Write(new StreamReader(e.Result).ReadToEnd());
}
}
接下来,我从WebClient响应(zip文件)中提取一个特定文件:
Uri fileUri = new Uri("content.txt", UriKind.Relative);
StreamResourceInfo info = new StreamResourceInfo(e.Result, null);
StreamResourceInfo streamInfo = System.Windows.Application.GetResourceStream(info, fileUri);
这可以按预期工作。稍后,我想从IsolatedStorage中的zip文件中提取“content.txt”:
using (IsolatedStorageFileStream isfs = isf.OpenFile("AppData\\" + FileName, FileMode.Open, FileAccess.Read))
{
if (myIsolatedStorage.FileExists("AppData\\" + FileName))
{
Uri fileUri = new Uri("content.txt", UriKind.Relative);
StreamResourceInfo info = new StreamResourceInfo(isfs, null);
StreamResourceInfo streamInfo = System.Windows.Application.GetResourceStream(info, fileUri);
}
}
虽然可以找到zip存档,但streamInfo始终为null。我做错了什么?
答案 0 :(得分:1)
不幸的是,与桌面.Net框架不同,Windows Phone 7.x框架不知道如何从压缩文件流式传输。实际上,在Windows Phone上,根本无法访问System.IO.Compression命名空间。
幸运的是,DotNetZip库适用于WP7应用程序。您将需要使用Compact Framework二进制DLL,而不是Silverlight二进制DLL。
,Visual Studio会在添加引用时抱怨库可能不兼容,但它可以正常工作。