Extraiga el archivo zip de almacenamiento aislado

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

Primero, descargo un archivo zip a través de WebClient y lo guardo 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 tarde, quiero extraer el "content.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?

preguntado el 31 de julio de 12 a las 15:07

¿Qué archivo zip? Y si desea leer desde el IsolatedStoage por qué estás usando StreamResourceInfo en lugar de StreamReader! -

@Anirudha El archivo zip se encuentra en la carpeta de almacenamiento aislado: AppData\\" + FileName Estoy usando StreamResourceInfo porque puede acceder a archivos zip comprimidos de forma nativa. -

1 Respuestas

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

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

Respondido 31 Jul 12, 19:07

Estoy usando esta técnica para evitar cualquier lib de terceros: sharpgis.net/post/2009/04/22/… - Jaspe

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.