net example descomprimir crear asp archivo abrir c# silverlight windows-phone-7 zip isolatedstorage

example - ziparchive c#



Extraer archivo zip de isolatedstorage (1)

Desafortunadamente, a diferencia del escritorio .Net framework, el Windows Phone 7.x framework no sabe cómo transmitir desde un archivo comprimido. De hecho, en Windows Phone no tiene acceso al espacio de nombres System.IO.Compression.

Afortunadamente, la biblioteca DotNetZip funciona bien para las aplicaciones WP7. Querrá utilizar el archivo DLL binario Compact Framework, no el de Silverlight. Visual Studio se quejará de que la biblioteca puede no ser compatible al agregar la referencia, pero funcionará perfectamente.

Estoy atascado en este problema, obviamente, estoy haciendo algo mal.

Primero, descargo un archivo zip a través de WebClient y lo almacena en 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()); } }

A continuación, extraigo un archivo específico de la respuesta de WebClient (el archivo zip):

Uri fileUri = new Uri("content.txt", UriKind.Relative); StreamResourceInfo info = new StreamResourceInfo(e.Result, null); StreamResourceInfo streamInfo = System.Windows.Application.GetResourceStream(info, fileUri);

Esto funciona como se esperaba Más adelante, quiero extraer el "contenido.txt" del archivo zip en IsolatedStorage con esto:

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); } }

Aunque se puede encontrar el archivo zip, streamInfo siempre es nulo. ¿Qué estoy haciendo mal?