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:
IsolatedStoragePermission
Objekte.IsolatedStorageException
Ausnahme wird ausgelöst.IsolatedStorageFilePermission
entscheidet, ob der Datei oder dem Verzeichnis die Berechtigung erteilt werden soll. 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.
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
.
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
.
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 ();
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.
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 ();
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 ();
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.
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:
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.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles
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.
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.