Travailler avec un stockage isolé sur Windows Phone 8

Le stockage isolé est utilisé pour stocker des données locales sur un Windows Phone. Il est "isolé" car d'autres applications ne peuvent pas accéder à ces données. Dans ce didacticiel, vous obtiendrez une vue d'ensemble du stockage isolé et découvrirez comment vous en servir pour stocker des données plus sûrement sur Windows Phone 8..

L'architecture mobile du stockage isolé est similaire aux applications Silverlight sous Windows. Toutes les opérations d'E / S sont limitées au stockage isolé et ne disposent pas d'accès direct au système de fichiers du système d'exploitation sous-jacent, ce qui contribue à la sécurité et empêche les accès non autorisés et la corruption de données provenant d'autres applications. Si vous souhaitez partager des données entre deux applications, vous aurez besoin d'un type de service basé sur le cloud pouvant partager ces données pour vous.. 

Le dossier local est le dossier racine du magasin de données de votre application. Il existe deux manières de stocker des données localement. La première consiste à utiliser une collection de paires nom / valeur appelée IsolatedStorageSettings. L’autre méthode consiste à créer des fichiers et des dossiers réels appelés IsolatedStorageFile. Voici quelques points à mentionner sur le stockage isolé:

  • Le stockage isolé utilise des quotas d’autorisation, qui sont des limites de stockage définies par IsolatedStoragePermission objets.
  • Si vous essayez d'écrire des données dépassant le quota, un IsolatedStorageException une exception est levée.
  • IsolatedStorageFilePermission décide d'accorder ou non l'autorisation au fichier ou au répertoire. 

1. Schémas d'URI

Utilisez le isostore ou ms-appdata Noms de schéma d'URI lors de l'adressage du dossier local dans un chemin. Ces deux schémas d'URI vous permettent d'accéder au dossier local, mais ils ne peuvent pas être utilisés de manière interchangeable.. ms-appdata est utilisé pour adresser la racine du dossier local avec les API, tandis que isostore est utilisé pour adresser la racine du dossier local. L'exemple suivant montre ceci. 

// Créer une base de données locale dans le dossier local avec le schéma d'isostore URI. MyDataContext db = new MyDataContext ("isostore: /mydb.sdf"); // Récupère un fichier du dossier local avec le schéma d'URI ms-appdata. var file = attend Windows.StorageFile.GetFileFromApplicationUriAsync (nouvel Uri ("ms-appdata: ///local/AppConfigSettings.xml"));

ms-appdata nécessite trois barres obliques (///) et isostore nécessite seulement une barre oblique (/). La longueur totale du chemin pour l'un des deux schémas d'URI ne peut pas dépasser 185 caractères.

2. IsolatedStorageSettings

Le moyen le plus simple de stocker des données dans un stockage isolé consiste à utiliser le IsolatedStorageSettings classe, qui est un dictionnaire qui stocke les paires clé-valeur dans un stockage isolé. IsolatedStorageSettings est généralement utilisé pour enregistrer des paramètres, tels que le nombre d'images à afficher par page, les options de mise en page, etc. Les données sauvegardées dans IsolatedStorageSettings persiste après le lancement d'applications.

Si vous voulez juste stocker des informations de paramètres comme Nom d'utilisateur = "Fred", alors vous pouvez utiliser le Paramètres de l'application objet en stockage isolé. Il est utilisé de la même manière que vous utiliseriez un dictionnaire. le saveString méthode peut être utilisée pour enregistrer une valeur de chaîne message pour la clé prénom.

void saveString (message chaîne, nom chaîne) IsolatedStorageSettings.ApplicationSettings [nom] = message; IsolatedStorageSettings.ApplicationSettings.Save (); 

Le stockage fonctionne comme un dictionnaire mais n'oubliez pas d'appeler sauvegarder quand vous avez fini d'ajouter des clés.

Pour récupérer les valeurs des paramètres, vous pouvez utiliser le loadString méthode qui prend la clé des paramètres enregistrés en tant que paramètre et renvoie la valeur si la clé existe.

string loadString (nom de chaîne) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) return (string) IsolatedStorageSettings.ApplicationSettings [nom];  else return null;  

Testez si la clé existe avant d'essayer de la trouver. Si vous essayez d'obtenir la valeur d'une clé inexistante, une exception sera levée..

Une bonne pratique consiste à créer une classe statique spéciale contenant les paramètres de votre application. Cela facilite l'accès à n'importe quelle propriété de votre application à tout moment..

Si vous travaillez sur un projet d’application Windows universelle, utilisez IsolatedStorageSettings.ApplicationSettings donnera une erreur de syntaxe. Vous devez le remplacer par Windows.Storage.ApplicationData.Current.LocalSettings.

3. IsolatedStorageFile

IsolatedStorageFile est le mécanisme que vous pouvez utiliser pour stocker des fichiers sur le périphérique d'un utilisateur. Vous pouvez effectuer diverses opérations sur le stockage isolé, telles que la création de dossiers et de fichiers, l'écriture dans un fichier, la lecture de données, la suppression de fichiers, etc..

Ces fichiers et dossiers ne sont pas accessibles aux autres applications installées sur le périphérique de l'utilisateur. le IsolatedStorageFileStream La classe est utilisée pour lire, écrire et créer des fichiers dans un stockage isolé. Cette classe s'étend FileStream, ce qui signifie que vous pouvez utiliser une instance de IsolatedStorageFileStream dans la plupart des situations où un FileStream exemple, pourrait être utilisé, par exemple pour construire un StreamReader ou StreamWriter.

Écrire dans un fichier 

L'extrait de code suivant vous montre comment écrire dans un fichier dans un stockage isolé. le saveGameToIsolatedStorage fonction crée un nouveau fichier dans un stockage isolé et enregistre la chaîne message en cela.

saveGameToIsolatedStorage (string message) en utilisant (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) en utilisant un en-tête writer. writer.WriteLine (message); // enregistrer le rédacteur du message.Fermer ();  

Lecture d'un fichier

le loadString function lit et retourne le texte contenu dans le fichier. La fonction utilise Le fichier existe vérifier d'abord si le fichier existe dans un stockage isolé. Il utilise ensuite une instance de StreamReader lire le fichier.

chaîne privée loadString () chaîne result = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("MonFichier.store") en utilisant (IsolatedStorageFileStream rawStream = isf.OpenFile ("fichier, System.IO.FileMode.Open)") StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); return result; 

Le stockage isolé n'est pas disponible pour les applications du Windows Store. À la place, utilisez les classes de données d’application dans Windows.Storage Espaces de noms inclus dans l'API Windows Runtime pour stocker des données et des fichiers locaux.

Il est recommandé de se débarrasser des instances de IsolatedStorageFile et IsolatedStorageFileStream quand ils ne sont plus nécessaires. le en utilisant déclaration le fait automatiquement pour vous et son utilisation est considérée comme une bonne pratique.

Écrire dans un fichier existant

Pour écraser le contenu d’un fichier existant, utilisez une instance de StreamWriter classe pour ouvrir le fichier. Les paramètres FileMode.Open et FileAccess.Write sont passés pour ouvrir le fichier avec un accès en écriture. Cela écrasera le contenu existant avec de nouvelles données.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (nom du fichier)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (nom du fichier, FileMode.Open, FileAccess.Write, myIsolatedStorage)))) string stringTextData = "Apprend à coder avec Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close (); 

Ajout à un fichier existant

L'ajout de données à un fichier existant est très similaire à l'écriture de données dans un fichier existant. La seule modification nécessaire consiste à définir le mode de fichier sur FileMode.Append.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (nom du fichier)) if (myIsolatedStorage.FileExists (nom du fichier)) en utilisant (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (nomFichier, FileMode.Append, FileAccess.Write, myIsolatedStorage)) Utilisez Tuts + pour apprendre des compétences créatives, façonnez votre avenir "; writeFile.WriteLine (someTextData); writeFile.Close ();  

Suppression d'un fichier texte

Pour supprimer un fichier texte, vérifions d’abord si le fichier texte existe dans un stockage isolé, puis utilisons Supprimer le fichier supprimer le fichier.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (nom du fichier)) myIsolatedStorage.DeleteFile (nom du fichier); 

Je vous encourage à explorer l'exemple d'application de ce didacticiel pour savoir comment lire, écrire et ajouter des données à un fichier..

4. Explorateur de stockage isolé

Lors du débogage d'une application, vous devrez peut-être vérifier les fichiers et les dossiers enregistrés dans le stockage isolé de votre application pour vérifier que les fichiers corrects sont en cours d'enregistrement au bon emplacement. Les émulateurs et les appareils exécutant Windows Phone 8 ou version ultérieure peuvent utiliser Windows Phone Power Tools, un outil graphique permettant d'accéder au stockage isolé d'applications..

Une autre option utilise le Explorateur de stockage isolé ou ISETool, un outil de ligne de commande installé avec le kit de développement logiciel Windows Phone. Vous pouvez utiliser ISETool pour répertorier, copier et remplacer des fichiers et des répertoires dans le dossier local de votre application..

ISETool peut être utilisé avec n'importe quel périphérique ou émulateur et est généralement installé à l'emplacement suivant:

Fichiers de programme (x86) \ MicrosoftSDKs \ WindowsPhone \ v8.0 \ Tools \ IsolatedStorageExplorerTool

Voici quelques points à noter lorsque vous utilisez ISETool:

  • L'application doit être installée sur l'émulateur ou l'appareil.
  • L'émulateur ou le périphérique doit être déverrouillé, mais l'application ne doit pas nécessairement être en cours d'exécution.
  • Vous ne pouvez pas accéder au stockage isolé des applications installées à partir du Windows Phone Store..
  • Vous ne pouvez pas afficher les paramètres stockés à l'aide de la IsolatedStorageSettings classe utilisant ISETool.

Pour utiliser ISETool, vous devez utiliser la syntaxe suivante:

ISETool.exe    []

Voici quelques choses à faire avec ISETool.

Copier des fichiers d'un stockage isolé vers un ordinateur

  1. Déployez l'application que vous souhaitez tester sur l'émulateur ou sur un périphérique et créez des fichiers et des répertoires locaux. 
  2. Obtenir l'identifiant de l'application à partir du ID de produit attribut de l'élément app dans le WMAppManifest.xml fichier.
  3. Aller vers ISETool.exe à l'aide de l'invite de commande et exécutez la commande suivante pour copier tous les fichiers de la mémoire de stockage isolée de l'application sur votre ordinateur..
ISETool.exe est xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles

Remplacement de fichiers dans un stockage isolé

Répétez les trois étapes précédentes et utilisez la commande suivante pour remplacer les fichiers du stockage isolé de l'application..

ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba “C: \ Data \ My Files”

Si vous voulez en savoir plus sur ISETool, je vous suggère de lire un autre article sur l’utilisation de ISETool..

Conclusion

Nous avons deux mécanismes simples disponibles sur Windows Phone, IsolatedStorageSettings et IsolatedStorageFile. Le stockage isolé représente une zone de stockage contenant des fichiers et des répertoires auxquels d'autres applications ne peuvent pas accéder. Le stockage isolé est utile dans de nombreuses situations. N'hésitez pas à télécharger les fichiers sources du didacticiel à utiliser comme référence.