El almacenamiento aislado se utiliza para almacenar datos locales en un teléfono con Windows. Está "aislado" porque otras aplicaciones no pueden acceder a estos datos. En este tutorial, obtendrá una descripción general del almacenamiento aislado y aprenderá cómo usarlo para almacenar datos de forma más segura en Windows Phone 8.
La arquitectura móvil del almacenamiento aislado es similar a las aplicaciones basadas en Silverlight en Windows. Todas las operaciones de E / S están restringidas a almacenamiento aislado y no tienen acceso directo al sistema de archivos del sistema operativo subyacente, lo que ayuda a proporcionar seguridad y evita el acceso no autorizado y la corrupción de datos de otras aplicaciones. Si desea compartir datos entre dos aplicaciones, necesitará algún tipo de servicio basado en la nube que pueda compartir esos datos por usted..
La carpeta local es la carpeta raíz del almacén de datos de su aplicación. Hay dos formas de almacenar datos localmente. La primera forma es a través de una colección de pares nombre / valor llamados AislamientoAlmacenamientoAjustes
. La otra forma es a través de la creación de archivos y carpetas reales llamados Archivo de almacenamiento aislado
. Aquí hay algunas cosas que vale la pena mencionar sobre el almacenamiento aislado:
AislamientoAlmacenamientoPermisión
objetos.IsolatedStorageException
se lanza la excepción.IsolatedStorageFilePermission
Decide si otorgar permiso al archivo o directorio.. Utilizar el isostore
o ms-appdata
Nombres de esquema URI al direccionar la carpeta local en una ruta. Ambos esquemas de URI le permiten acceder a la carpeta local, pero no se pueden usar de manera intercambiable. ms-appdata
se utiliza para direccionar la raíz de la carpeta local con API, mientras que isostore
Se utiliza para direccionar la raíz de la carpeta local. El siguiente ejemplo demuestra esto.
// Crear una base de datos local en la carpeta local con el esquema URI isostore. MyDataContext db = new MyDataContext ("isostore: /mydb.sdf"); // Obtenga un archivo de la carpeta local con el esquema de URI ms-appdata. var archivo = aguarda Windows.StorageFile.GetFileFromApplicationUriAsync (new Uri ("ms-appdata: ///local/AppConfigSettings.xml"));
ms-appdata
requiere tres barras (///
) y isostore
requiere solo una barra (/
). La longitud total de la ruta para cualquiera de los dos esquemas de URI no puede exceder los 185 caracteres.
AislamientoAlmacenamientoAjustes
La forma más sencilla de colocar los datos en un almacenamiento aislado es utilizar el AislamientoAlmacenamientoAjustes
clase, que es un Diccionario
que almacena pares clave-valor en almacenamiento aislado. AislamientoAlmacenamientoAjustes
normalmente se usa para guardar configuraciones, como la cantidad de imágenes que se muestran por página, las opciones de diseño de la página, etc. Los datos guardados en AislamientoAlmacenamientoAjustes
Persiste en todos los lanzamientos de aplicaciones..
Si solo desea almacenar información de configuración como Nombre de usuario = "Fred"
, entonces puedes usar el Configuraciones de la aplicación
Objeto en almacenamiento aislado. Se usa de la misma manera que usaría un diccionario. los saveString
El método puede usarse para guardar un valor de cadena. mensaje
para la llave nombre
.
void saveString (mensaje de cadena, nombre de cadena) IsolatedStorageSettings.ApplicationSettings [nombre] = mensaje; IsolatedStorageSettings.ApplicationSettings.Save ();
El almacenamiento funciona como un diccionario, pero recuerda llamar Salvar
cuando hayas terminado de añadir llaves.
Para recuperar valores de la configuración, puede utilizar el loadString
método que toma la clave de la configuración guardada como parámetro y devuelve el valor si la clave existe.
string loadString (nombre de cadena) if (IsolatedStorageSettings.ApplicationSettings.Contains (nombre)) return (cadena) IsolatedStorageSettings.ApplicationSettings [nombre]; else return null;
Prueba si la clave existe antes de intentar encontrarla. Si está intentando obtener el valor de una clave que no existe, se lanzará una excepción.
Una buena práctica es crear una clase estática especial, que contenga la configuración de su aplicación. Esto facilita el acceso a cualquier propiedad en su aplicación en cualquier momento.
Si estás trabajando en un proyecto de aplicación universal de Windows, entonces estás usando IsolatedStorageSettings.ApplicationSettings
dará un error de sintaxis. Necesitas reemplazarlo con Windows.Storage.ApplicationData.Current.LocalSettings
.
Archivo de almacenamiento aislado
Archivo de almacenamiento aislado
es el mecanismo que puede utilizar para almacenar archivos en el dispositivo de un usuario. Puede realizar varias operaciones en el almacenamiento aislado, como crear carpetas y archivos, escribir en un archivo, leer datos, eliminar archivos, etc..
Estos archivos y carpetas no son accesibles para otras aplicaciones instaladas en el dispositivo del usuario. los AisladoAlmacenamientoFileStream
La clase se usa para leer, escribir y crear archivos en almacenamiento aislado. Esta clase se extiende FileStream
, lo que significa que puede utilizar una instancia de AisladoAlmacenamientoFileStream
en la mayoría de las situaciones donde un FileStream
de otro modo podría utilizarse, como para construir un StreamReader
o StreamWriter
.
El siguiente fragmento de código le muestra cómo escribir en un archivo en almacenamiento aislado. los saveGameToIsolatedStorage
La función crea un nuevo archivo en almacenamiento aislado y guarda la cadena mensaje
en eso.
private void saveGameToIsolatedStorage (mensaje de cadena) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) using (IsolatedStorageFileStream rawStream en el estado de cuenta). writer.WriteLine (mensaje); // guardar el mensaje writer.Close ();
los loadString
La función lee y devuelve el texto contenido en el archivo. La función utiliza El archivo existe
para comprobar primero si el archivo existe en almacenamiento aislado. A continuación, utiliza una instancia de StreamReader
para leer el archivo.
cadena privada loadString () string result = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") using (IsolatedStorageFileStream rawStream = isf.OpenFile (filename, System.IO.FileMode.Open)) StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); devolver el resultado;
El almacenamiento aislado no está disponible para las aplicaciones de la Tienda Windows. En su lugar, utilice las clases de datos de la aplicación en el Windows.Almacenamiento
espacios de nombres incluidos en la API de tiempo de ejecución de Windows para almacenar datos y archivos locales.
Se recomienda desechar las instancias de Archivo de almacenamiento aislado
y AisladoAlmacenamientoFileStream
cuando ya no son necesarios. los utilizando
La declaración lo hace automáticamente por usted y su uso se considera una buena práctica..
Para sobrescribir el contenido de un archivo existente, use una instancia de StreamWriter
Clase para abrir el archivo. Los parametros FileMode.Open
y FileAccess.Write
Se pasan para abrir el archivo con acceso de escritura. Esto sobrescribirá el contenido existente con nuevos datos..
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (filename, FileMode.Open, FileAccess.Write, myIsolatedStorage))) string someTextData = "Learn to code using Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close ();
Agregar datos a un archivo existente es muy similar a escribir datos en un archivo existente. El único cambio necesario es configurar el modo de archivo para FileMode.Append
.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (nombre de archivo)) if (myIsolatedStorage.FileExists (nombre de archivo)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream) (filename) Usa Tuts + para aprender habilidades creativas, moldear tu futuro "; writeFile.WriteLine (someTextData); writeFile.Close ();
Para eliminar un archivo de texto, primero verificamos si el archivo de texto existe en un almacenamiento aislado y luego usamos Borrar archivo
para borrar el archivo.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (nombre de archivo)) myIsolatedStorage.DeleteFile (nombre de archivo);
Le animo a explorar la aplicación de ejemplo de este tutorial para ver cómo leer, escribir y agregar datos a un archivo.
Al depurar una aplicación, es posible que deba revisar los archivos y carpetas guardados en el almacenamiento aislado de su aplicación para verificar que los archivos correctos se estén guardando en la ubicación correcta. Los emuladores y dispositivos que ejecutan Windows Phone 8 o inferior pueden usar Windows Phone Power Tools, que es una herramienta basada en GUI para acceder al almacenamiento aislado de aplicaciones.
Otra opción es usar el Explorador de almacenamiento aislado o ISETool, una herramienta de línea de comandos instalada junto con el SDK de Windows Phone. Puede usar ISETool para listar, copiar y reemplazar archivos y directorios en la carpeta local de su aplicación.
ISETool se puede utilizar con cualquier dispositivo o emulador, y generalmente se instala en la siguiente ubicación:
Archivos de programa (x86) \ MicrosoftSDKs \ WindowsPhone \ v8.0 \ Tools \ IsolatedStorageExplorerTool
Aquí hay algunas cosas que vale la pena mencionar al usar ISETool:
AislamientoAlmacenamientoAjustes
clase usando ISETool.Para usar ISETool, necesitas usar la siguiente sintaxis:
ISETool.exeEl ]
Aquí hay un par de cosas que se pueden hacer usando ISETool.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles
Repita los tres pasos anteriores y use el siguiente comando para reemplazar archivos en el almacenamiento aislado de la aplicación.
ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba “C: \ Data \ Mis archivos”
Si desea obtener más información sobre ISETool, le sugiero que lea otro artículo que escribí sobre el uso de ISETool.
Tenemos dos mecanismos simples disponibles en Windows Phone., AislamientoAlmacenamientoAjustes
y Archivo de almacenamiento aislado
. El almacenamiento aislado representa un área de almacenamiento que contiene archivos y directorios a los que otras aplicaciones no pueden acceder. El almacenamiento aislado es útil en muchas situaciones. Siéntase libre de descargar los archivos fuente del tutorial para usar como referencia.