Extraiga el archivo zip de almacenamiento aislado
Frecuentes
Visto 1,468 equipos
1
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?
1 Respuestas
1
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 c# silverlight windows-phone-7 zip isolatedstorage or haz tu propia pregunta.
¿Qué archivo zip? Y si desea leer desde el
IsolatedStoage
por qué estás usandoStreamResourceInfo
en lugar deStreamReader
! - Anirudha@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. - Jasper