Arbeiten mit isoliertem Speicher unter Windows Phone 8

Isolierter Speicher wird zum Speichern lokaler Daten auf einem Windows Phone verwendet. Es ist "isoliert", weil andere Anwendungen nicht auf diese Daten zugreifen können. In diesem Lernprogramm erhalten Sie einen Überblick über den isolierten Speicher und erfahren, wie Sie Daten unter Windows Phone 8 sicherer speichern können.

Die mobile Architektur des isolierten Speichers ähnelt den Silverlight-basierten Anwendungen unter Windows. Alle E / A-Vorgänge sind auf isolierte Speicherung beschränkt und haben keinen direkten Zugriff auf das zugrunde liegende Dateisystem des Betriebssystems. Dies trägt zur Sicherheit bei und verhindert den unberechtigten Zugriff und die Beschädigung von Daten durch andere Apps. Wenn Sie Daten zwischen zwei Anwendungen gemeinsam nutzen möchten, benötigen Sie einen Cloud-basierten Dienst, der diese Daten für Sie freigeben kann. 

Der lokale Ordner ist der Stammordner des Datenspeichers Ihrer App. Es gibt zwei Möglichkeiten, Daten lokal zu speichern. Die erste Möglichkeit besteht darin, eine Reihe von Namen / Wert-Paaren aufzurufen IsolatedStorageSettings. Der andere Weg ist durch die Erstellung der eigentlichen Dateien und Ordner IsolatedStorageFile. Hier sind einige Dinge, die es wert sind, die isolierte Lagerung zu erwähnen:

  • Der isolierte Speicher verwendet Berechtigungsquoten, die von festgelegt werden IsolatedStoragePermission Objekte.
  • Wenn Sie versuchen, Daten zu schreiben, die die Quote überschreiten, eine IsolatedStorageException Ausnahme wird ausgelöst.
  • IsolatedStorageFilePermission entscheidet, ob der Datei oder dem Verzeichnis die Berechtigung erteilt werden soll. 

1. URI-Schemata

Verwenden Sie die Isostore oder ms-appdata URI-Schemanamen, wenn der lokale Ordner in einem Pfad adressiert wird. Mit diesen beiden URI-Schemas können Sie auf den lokalen Ordner zugreifen, sie können jedoch nicht austauschbar verwendet werden. ms-appdata wird verwendet, um den Stamm des lokalen Ordners mit APIs zu adressieren, während Isostore wird verwendet, um den Stamm des lokalen Ordners zu adressieren. Das folgende Beispiel zeigt dies. 

// Erstellen Sie im lokalen Ordner eine lokale Datenbank mit dem Isostore-URI-Schema. MyDataContext db = new MyDataContext ("isostore: /mydb.sdf"); // Eine Datei aus dem lokalen Ordner mit dem URI-Schema ms-appdata abrufen. var file = waitit Windows.StorageFile.GetFileFromApplicationUriAsync (new Uri ("ms-appdata: ///local/AppConfigSettings.xml"));

ms-appdata erfordert drei Schrägstriche (///) und Isostore erfordert nur einen Schrägstrich (/). Die Gesamtlänge des Pfads für eines der beiden URI-Schemas darf 185 Zeichen nicht überschreiten.

2. IsolatedStorageSettings

Die einfachste Möglichkeit, Daten isoliert zu speichern, ist die Verwendung von IsolatedStorageSettings Klasse, die eine ist Wörterbuch das speichert Schlüssel-Wert-Paare im isolierten Speicher. IsolatedStorageSettings wird normalerweise zum Speichern von Einstellungen verwendet, z. B. Anzahl der Bilder pro Seite, Seitenlayoutoptionen usw. Die Daten werden in gespeichert IsolatedStorageSettings bleibt über Anwendungsstarts hinweg bestehen.

Wenn Sie nur Einstellungen speichern möchten, wie Username = "Fred", dann kannst du die verwenden Anwendungseinstellungen Objekt in isoliertem Speicher. Es wird auf dieselbe Weise verwendet, wie Sie es mit einem Wörterbuch tun würden. Das saveString Methode kann verwendet werden, um einen String-Wert zu speichern Botschaft für den Schlüssel Name.

void saveString (Zeichenfolgenachricht, Name der Zeichenfolge) IsolatedStorageSettings.ApplicationSettings [Name] = Nachricht; IsolatedStorageSettings.ApplicationSettings.Save (); 

Der Speicher funktioniert wie ein Wörterbuch, aber erinnern Sie sich an einen Anruf sparen Wenn Sie mit dem Hinzufügen der Schlüssel fertig sind.

Um Werte aus den Einstellungen abzurufen, können Sie die verwenden loadString Methode, die den Schlüssel der gespeicherten Einstellungen als Parameter verwendet und den Wert zurückgibt, wenn der Schlüssel vorhanden ist.

Zeichenfolge loadString (Name der Zeichenfolge) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) return (string) IsolatedStorageSettings.ApplicationSettings [name];  else return null;  

Testen Sie, ob der Schlüssel vorhanden ist, bevor Sie ihn suchen. Wenn Sie versuchen, den Wert eines Schlüssels abzurufen, der nicht vorhanden ist, wird eine Ausnahme ausgelöst.

Es empfiehlt sich, eine spezielle statische Klasse zu erstellen, die die Einstellungen Ihrer Anwendung enthält. Auf diese Weise können Sie jederzeit auf jede Eigenschaft in Ihrer Anwendung zugreifen.

Wenn Sie an einem Universal Windows App-Projekt arbeiten, verwenden Sie IsolatedStorageSettings.ApplicationSettings wird einen Syntaxfehler geben. Sie müssen es durch ersetzen Windows.Storage.ApplicationData.Current.LocalSettings.

3. IsolatedStorageFile

IsolatedStorageFile ist der Mechanismus, den Sie zum Speichern von Dateien auf dem Gerät eines Benutzers verwenden können. Sie können auf dem isolierten Speicher verschiedene Vorgänge ausführen, z. B. Ordner und Dateien erstellen, in eine Datei schreiben, Daten lesen, Dateien entfernen usw..

Auf diese Dateien und Ordner kann nicht auf andere Anwendungen zugegriffen werden, die auf dem Gerät des Benutzers installiert sind. Das IsolatedStorageFileStream Klasse wird zum Lesen, Schreiben und Erstellen von Dateien im isolierten Speicher verwendet. Diese Klasse erweitert sich Datenfluss, was bedeutet, dass Sie eine Instanz von verwenden können IsolatedStorageFileStream in den meisten Situationen, in denen a Datenfluss Eine Instanz könnte anderweitig verwendet werden, z StreamReader oder StreamWriter.

In eine Datei schreiben 

Das folgende Codefragment zeigt, wie Sie in eine isolierte Datei schreiben. Das saveGameToIsolatedStorage Funktion erstellt eine neue Datei im isolierten Speicher und speichert die Zeichenfolge Botschaft drin.

private void saveGameToIsolatedStorage (Zeichenfolgenachricht) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) using (IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) writer.WriteLine (Nachricht); // speichern Sie die Nachricht writer.Close ();  

Aus einer Datei lesen

Das loadString Die Funktion liest den in der Datei enthaltenen Text und gibt ihn zurück. Die Funktion verwendet Datei existiert Überprüfen Sie zunächst, ob die Datei im isolierten Speicher vorhanden ist. Es verwendet dann eine Instanz von StreamReader um die Datei zu lesen.

private Zeichenfolge loadString () Zeichenfolge result = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") using (IsolatedStorageFileStream rawStream = isf.OpenFile (Dateiname, System.IO.FileMode.Open)) StreamReaderer StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); return result; 

Für Windows Store-Apps ist kein isolierter Speicher verfügbar. Verwenden Sie stattdessen die Anwendungsdatenklassen in der Windows.Storage In der Windows-Laufzeit-API enthaltene Namespaces zum Speichern lokaler Daten und Dateien.

Es wird empfohlen, die Instanzen von zu entsorgen IsolatedStorageFile und IsolatedStorageFileStream wenn sie nicht mehr gebraucht werden. Das mit Diese Anweisung erledigt dies automatisch für Sie und ihre Verwendung wird als bewährte Methode betrachtet.

In eine vorhandene Datei schreiben

Um den Inhalt einer vorhandenen Datei zu überschreiben, verwenden Sie eine Instanz von StreamWriter Klasse, um die Datei zu öffnen. Die Parameter FileMode.Open und FileAccess.Write werden übergeben, um die Datei mit Schreibzugriff zu öffnen. Dadurch werden vorhandene Inhalte mit neuen Daten überschrieben.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (Dateiname)) using (StreamWriter writeFile = neuer StreamWriter (neuer IsolatedStorageFileStream (Dateiname, FileMode.Open, FileAccess.Write, myIsolatedStorage))) Zeichenfolge someTextData = "Lernen Sie den Code mit Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close (); 

An eine vorhandene Datei anhängen

Das Hinzufügen von Daten zu einer vorhandenen Datei ist dem Schreiben von Daten in eine vorhandene Datei sehr ähnlich. Die einzige Änderung ist das Einstellen des Dateimodus auf FileMode.Append.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (Dateiname)) if (myIsolatedStorage.FileExists (Dateiname)) using (StreamWriter writeFile = neuer StreamWriter (neuer IsolatedStorageFileStream (Dateiname, FileMode.Append, FileAccess.Write, myIsolatedStorage)) Verwenden Sie Tuts +, um kreative Fähigkeiten zu erlernen, gestalten Sie Ihre Zukunft "; writeFile.WriteLine (someTextData); writeFile.Close ();  

Eine Textdatei löschen

Um eine Textdatei zu löschen, überprüfen wir zunächst, ob die Textdatei im isolierten Speicher vorhanden ist, und verwenden Sie dann Datei löschen um die Datei zu löschen.

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (Dateiname)) myIsolatedStorage.DeleteFile (Dateiname); 

Ich empfehle Ihnen, die Beispielanwendung dieses Lernprogramms zu erkunden, um zu erfahren, wie Sie Daten lesen, schreiben und an eine Datei anhängen.

4. Isolierter Speicher-Explorer

Beim Debuggen einer Anwendung müssen Sie möglicherweise die Dateien und Ordner überprüfen, die im isolierten Speicher Ihrer App gespeichert sind, um sicherzustellen, dass die richtigen Dateien am richtigen Speicherort gespeichert werden. Emulatoren und Geräte mit Windows Phone 8 oder niedriger können Windows Phone Power Tools verwenden, ein GUI-basiertes Tool für den Zugriff auf den isolierten Speicher von Apps.

Eine andere Option ist die Verwendung von Isolierter Speicher-Explorer oder ISETool, ein Befehlszeilentool, das zusammen mit dem Windows Phone SDK installiert wird. Mit ISETool können Sie Dateien und Verzeichnisse im lokalen Ordner Ihrer App auflisten, kopieren und ersetzen.

ISETool kann mit jedem Gerät oder Emulator verwendet werden und wird normalerweise an folgendem Speicherort installiert:

Programmdateien (x86) \ MicrosoftSDKs \ WindowsPhone \ v8.0 \ Tools \ IsolatedStorageExplorerTool

Hier sind einige Dinge, die es zu beachten gilt, wenn Sie ISETool verwenden:

  • Die App muss auf dem Emulator oder Gerät installiert sein.
  • Der Emulator oder das Gerät muss entsperrt sein, aber die App muss nicht ausgeführt werden.
  • Sie können nicht auf den isolierten Speicher von Apps zugreifen, die im Windows Phone Store installiert wurden.
  • Sie können keine Einstellungen anzeigen, die mit gespeichert wurden IsolatedStorageSettings Klasse mit ISETool.

Um ISETool verwenden zu können, müssen Sie folgende Syntax verwenden:

ISETool.exe    []

Hier sind einige Dinge, die mit ISETool gemacht werden können.

Kopieren von Dateien vom isolierten Speicher auf den Computer

  1. Stellen Sie die App, die Sie testen möchten, auf dem Emulator oder einem Gerät bereit und erstellen Sie lokale Dateien und Verzeichnisse. 
  2. Holen Sie sich die App-ID von der Produkt ID Attribut des App-Elements in der WMAppManifest.xml Datei.
  3. Navigiere zu ISETool.exe Verwenden Sie die Eingabeaufforderung, und führen Sie den folgenden Befehl aus, um alle Dateien aus dem isolierten Speicher der App auf Ihren Computer zu kopieren.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles

Ersetzen von Dateien im isolierten Speicher

Wiederholen Sie die vorherigen drei Schritte, und ersetzen Sie die Dateien im isolierten Speicher der App mit dem folgenden Befehl.

ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Daten \ Eigene Dateien"

Wenn Sie mehr über ISETool erfahren möchten, sollten Sie einen anderen Artikel lesen, den ich über die Verwendung von ISETool geschrieben habe.

Fazit

In Windows Phone stehen zwei einfache Mechanismen zur Verfügung, IsolatedStorageSettings und IsolatedStorageFile. Isolierter Speicher stellt einen Speicherbereich dar, der Dateien und Verzeichnisse enthält, auf die andere Anwendungen nicht zugreifen können. Isolierte Lagerung ist in vielen Situationen hilfreich. Fühlen Sie sich frei, die Quelldateien des Tutorials als Referenz herunterzuladen.