1

私はこの問題で立ち往生しています - 明らかに、私は何か間違ったことをしています。

まず、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 の応答から 1 つの特定のファイル (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 です。私は何を間違っていますか?

4

1 に答える 1

1

残念ながら、デスクトップの .Net フレームワークとは異なり、Windows Phone 7.x フレームワークは圧縮ファイルからストリーミングする方法を認識していません。実際、Windows Phone では System.IO.Compression 名前空間にまったくアクセスできません。

幸いなことに、DotNetZipライブラリは WP7 アプリで問題なく動作します。Silverlight ではなく、Compact Framework バイナリ DLL を使用する必要があります。Visual Studio は、参照を追加するときにライブラリに互換性がない可能性があると警告しますが、問題なく動作します。

于 2012-07-31T18:48:26.753 に答える