Freigeben über


Arbeiten mit Dateien

In diesem Thema wird erläutert, was Sie wissen müssen, um mit dem Lesen und Schreiben in Dateien in einer UWP-App (Universelle Windows-Plattform) zu beginnen. Die wichtigsten APIs und Typen werden eingeführt, und Links werden bereitgestellt, um weitere Informationen zu erhalten.

Dies ist keine Anleitung. Wenn Sie ein Lernprogramm benötigen, sehen Sie Erstellen, Schreiben und Lesen einer Datei, das nicht nur das Erstellen, Lesen und Schreiben einer Datei veranschaulicht, sondern auch zeigt, wie Puffer und Datenströme verwendet werden. Möglicherweise interessieren Sie sich auch für das Beispiel für den Dateizugriff , in dem gezeigt wird, wie Sie eine Datei erstellen, lesen, schreiben, kopieren und löschen sowie wie Sie Dateieigenschaften abrufen und eine Datei oder einen Ordner speichern, damit Ihre App problemlos wieder darauf zugreifen kann.

Wir betrachten Code zum Schreiben und Lesen von Text aus einer Datei und zum Zugreifen auf die lokalen, Roaming- und temporären Ordner der App.

Was müssen Sie wissen?

Hier sind die wichtigsten Typen, die Sie kennen müssen, um Text aus/in eine Datei zu lesen oder zu schreiben:

  • Windows.Storage.StorageFile stellt eine Datei dar. Diese Klasse verfügt über Eigenschaften, die Informationen über die Datei und Methoden zum Erstellen, Öffnen, Kopieren, Löschen und Umbenennen von Dateien bereitstellen. Sie sind möglicherweise daran gewöhnt, mit Zeichenfolgenpfaden umzugehen. Es gibt einige Windows-Runtime-APIs, die eine Zeichenkette als Pfad verwenden, aber häufiger nutzen Sie ein StorageFile, um eine Datei darzustellen, da einige Dateien, mit denen Sie in UWP arbeiten, möglicherweise keinen Pfad haben oder einen umständlichen Pfad besitzen. Verwenden Sie StorageFile.GetFileFromPathAsync(), um ein Zeichenfolgenpfad in eine StorageFilezu konvertieren.

  • Die FileIO-Klasse bietet eine einfache Möglichkeit zum Lesen und Schreiben von Text. Diese Klasse kann auch ein Byte-Array lesen/schreiben oder den Inhalt eines Puffers bearbeiten. Diese Klasse ist der PathIO-Klasse sehr ähnlich. Der Hauptunterschied besteht darin, dass anstelle eines Zeichenfolgenpfads, wie PathIO-, ein StorageFile-eingesetzt wird.

  • Windows.Storage.StorageFolder stellt einen Ordner (Verzeichnis) dar. Diese Klasse verfügt über Methoden zum Erstellen von Dateien, Abfragen des Inhalts eines Ordners, Erstellen, Umbenennen und Löschen von Ordnern und Eigenschaften, die Informationen zu einem Ordner bereitstellen.

Häufige Methoden, um ein StorageFolder- zu erhalten, sind unter anderem:

Schreiben von Text in eine Datei

In dieser Einführung konzentrieren wir uns auf ein einfaches Szenario: Lesen und Schreiben von Text. Sehen wir uns zunächst einen Code an, der die FileIO-Klasse zum Schreiben von Text in eine Datei verwendet.

Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
        Windows.Storage.CreationCollisionOption.OpenIfExists);

await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");

// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.

Wir identifizieren zunächst, wo sich die Datei befinden soll. Windows.Storage.ApplicationData.Current.LocalFolder bietet Zugriff auf den lokalen Datenordner, der bei der Installation für Ihre App erstellt wird. Details zu den Ordnern, auf die Ihre App zugreifen kann, finden Sie unter Access im Dateisystem .

Anschließend verwenden wir StorageFolder , um die Datei zu erstellen (oder zu öffnen, wenn sie bereits vorhanden ist).

Die FileIO-Klasse bietet eine bequeme Möglichkeit, Text in die Datei zu schreiben. FileIO.WriteTextAsync() ersetzt den gesamten Inhalt der Datei durch den bereitgestellten Text. FileIO.AppendLinesAsync() fügt eine Sammlung von Zeichenfolgen an eine Datei an, wobei jede Zeichenfolge in eine neue Zeile geschrieben wird.

Text aus einer Datei lesen

Wie beim Schreiben einer Datei beginnt das Lesen einer Datei mit der Angabe, wo sich die Datei befindet. Wir verwenden denselben Speicherort wie im obigen Beispiel. Anschließend verwenden wir die FileIO-Klasse , um den Inhalt zu lesen.

Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");

string text = await Windows.Storage.FileIO.ReadTextAsync(file);

Sie können auch jede Zeile der Datei in einzelne Zeichenfolgen in einer Sammlung mit IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile); einlesen.

Zugreifen auf das Dateisystem

Auf der UWP-Plattform ist der Ordnerzugriff beschränkt, um die Integrität und den Datenschutz der Daten des Benutzers sicherzustellen.

App-Ordner

Wenn eine UWP-App installiert wird, werden unter "c:\users\<Benutzername>\AppData\Local\Packages\<App-Paketbezeichner>" mehrere Ordner erstellt, um unter anderem lokale, Roaming- und temporäre Dateien der App zu speichern. Die App muss keine Funktionen für den Zugriff auf diese Ordner deklarieren, und auf diese Ordner kann von anderen Apps nicht zugegriffen werden. Diese Ordner werden auch entfernt, wenn die App deinstalliert wird.

Dies sind einige der App-Ordner, die Sie häufig verwenden werden:

  • LocalState: Für lokale Daten auf dem aktuellen Gerät. Wenn das Gerät gesichert wird, werden Daten in diesem Verzeichnis in einem Sicherungsimage in OneDrive gespeichert. Wenn der Benutzer das Gerät zurücksetzt oder ersetzt, werden die Daten wiederhergestellt. Greifen Sie auf diesen Ordner mit Windows.Storage.ApplicationData.Current.LocalFolder. zu, um lokale Daten, die Sie nicht auf OneDrive sichern möchten, im LocalCacheFolderzu speichern, auf die Sie mit Windows.Storage.ApplicationData.Current.LocalCacheFolderzugreifen können.

  • RoamingState: Daten, die hier gespeichert sind, roamen ab Windows 11 nicht mehr, aber der Ordner ist weiterhin verfügbar. Auf den Roamingordner mit Windows.Storage.ApplicationData.Current.RoamingFolderzugreifen. Empfohlener Ersatz ist Azure App Service. Azure App Service ist weit verbreitet, gut dokumentiert, zuverlässig und unterstützt plattform- und ökosystemübergreifende Szenarien wie iOS, Android und Web.

  • TempState: Für Daten, die möglicherweise gelöscht werden, wenn die App nicht ausgeführt wird. Zugreifen auf diesen Ordner mit Windows.Storage.ApplicationData.Current.TemporaryFolder.

Zugreifen auf den Rest des Dateisystems

Eine UWP-App muss ihre Absicht deklarieren, auf eine bestimmte Benutzerbibliothek zuzugreifen, indem sie die entsprechende Funktion zum Manifest hinzufügt. Der Benutzer wird dann, wenn die App installiert ist, aufgefordert, zu bestätigen, dass er/sie den Zugriff auf die angegebene Bibliothek autorisiert. Wenn nicht, wird die App nicht installiert. Es gibt Funktionen für den Zugriff auf Bilder, Videos und Musikbibliotheken. Eine vollständige Liste finden Sie unter Erklärung der App-Fähigkeiten. Um einen StorageFolder- für diese Bibliotheken abzurufen, verwenden Sie die Klasse Windows.Storage.KnownFolders.

Dokumentbibliothek

Obwohl es eine Möglichkeit gibt, auf die Dokumentbibliothek des Benutzers zuzugreifen, ist diese Funktion eingeschränkt, was bedeutet, dass eine App, die sie deklariert, vom Microsoft Store abgelehnt wird, es sei denn, Sie folgen einem Prozess, um eine spezielle Genehmigung zu erhalten. Es ist nicht für die allgemeine Verwendung vorgesehen. Verwenden Sie stattdessen die Datei- oder Ordnerauswahldialoge (siehe Öffnen von Dateien und Ordnern mit einem Auswahldialog und Speichern einer Datei mit einem Auswahldialog), mit denen der Benutzer zu dem Ordner oder der Datei navigieren kann. Wenn der Benutzer zu einem Ordner oder einer Datei navigiert, hat er implizit die Berechtigung erteilt, dass die App darauf zugreifen kann, und das System ermöglicht den Zugriff.

Allgemeiner Zugriff

Alternativ kann Ihre App die eingeschränkte Fähigkeit broadFileSystem in ihrem Manifest deklarieren, was ebenfalls die Genehmigung des Microsoft Store erfordert. Anschließend kann die App auf jede Datei zugreifen, auf die der Benutzer zugreifen kann, ohne dass eine Datei- oder Ordnerauswahl erforderlich ist.

Eine umfassende Liste der Speicherorte, auf die Apps zugreifen können, finden Sie unter Dateizugriffsberechtigungen.

Nützliche APIs und Dokumente

Hier finden Sie eine kurze Zusammenfassung der APIs und anderer nützlicher Dokumentationen, die Ihnen bei den ersten Schritten mit Dateien und Ordnern helfen.

Nützliche APIs

Programmierschnittstelle (API) BESCHREIBUNG
Windows.Storage.StorageFile Enthält Informationen über die Datei und Methoden zum Erstellen, Öffnen, Kopieren, Löschen und Umbenennen von Dateien.
Windows.Storage.StorageFolder- Enthält Informationen zu ordnern, Methoden zum Erstellen von Dateien und Methoden zum Erstellen, Umbenennen und Löschen von Ordnern.
FileIO Bietet eine einfache Möglichkeit zum Lesen und Schreiben von Text. Diese Klasse kann auch ein Bytearray oder den Inhalt eines Puffers lesen/schreiben.
PathIO Bietet eine einfache Möglichkeit zum Lesen/Schreiben von Text aus/in eine Datei mit einem Zeichenfolgenpfad für die Datei. Diese Klasse kann auch ein Bytearray oder den Inhalt eines Puffers lesen/schreiben.
DataReader & DataWriter Lesen und Schreiben von Puffern, Bytes, Ganzzahlen, GUIDs, TimeSpans und mehr, von/zu einem Datenstrom.
Windows.Storage.ApplicationData.Current Bietet Zugriff auf die ordner, die für die App erstellt wurden, z. B. den lokalen Ordner, den Roamingordner und den temporären Dateiordner.
Windows.Storage.Pickers.FolderPicker Ermöglicht dem Benutzer, einen Ordner auszuwählen, und gibt dafür einen StorageFolder- zurück. So erhalten Sie Zugriff auf Speicherorte, auf die die App standardmäßig nicht zugreifen kann.
Windows.Storage.Pickers.FileOpenPicker Ermöglicht es dem Benutzer, eine Datei zum Öffnen auszuwählen, und gibt dafür einen StorageFile- zurück. So erhalten Sie Zugriff auf eine Datei, auf die die App standardmäßig nicht zugreifen kann.
Windows.Storage.Pickers.FileSavePicker Ermöglicht dem Benutzer die Auswahl des Dateinamens, der Erweiterung und des Speicherorts für eine Datei. Gibt einen StorageFilezurück. So speichern Sie eine Datei an einem Speicherort, auf den die App standardmäßig nicht zugreifen kann.
Windows.Storage.Streams-Namespace Umfasst Lese- und Schreibstreams. Sehen Sie sich insbesondere die DataReader - und DataWriter-Klassen an, die Puffer, Bytes, ganze Zahlen, GUIDs, TimeSpans und vieles mehr lesen und schreiben.

Nützliche Dokumente

Thema BESCHREIBUNG
Windows.Storage-Namespace- API-Referenzdokumente.
Dateien, Ordner und Bibliotheken Konzeptionelle Dokumente.
Erstellen, Schreiben und Lesen einer Datei Umfasst das Erstellen, Lesen und Schreiben von Text, binären Daten und Datenströmen.
Erste Schritte beim lokalen Speichern von App-Daten Zusätzlich zu den bewährten Methoden zum Speichern lokaler Daten deckt sie den Zweck des Ordners "LocalSettings" und "LocalCache" ab.
Speichern und Abrufen von Einstellungen und anderen App-Daten Bietet eine Übersicht über die verschiedenen App-Datenspeicher, z. B. lokale, Roaming- und temporäre Ordner.
Dateizugriffsberechtigungen Informationen dazu, auf welche Dateisystemspeicherorte Ihre App zugreifen kann.
Dateien und Ordner mit einem Auswahltool öffnen Zeigt, wie man auf Dateien und Ordner zugreifen kann, indem der Benutzer über ein Auswahlfenster entscheidet.
Windows.Storage.Streams- Typen, die zum Lesen und Schreiben von Datenströmen verwendet werden.
Dateien und Ordner in den Bibliotheken "Musik", "Bilder" und "Videos" Behandelt, wie Sie Ordner aus Bibliotheken entfernen, die Liste der Ordner in einer Bibliothek abrufen und gespeicherte Fotos, Musik und Videos entdecken.

Nützliche Codebeispiele

Codebeispiel BESCHREIBUNG
Beispieldaten für Anwendungen Zeigt, wie Daten gespeichert und abgerufen werden, die für jeden Benutzer mithilfe der Anwendungsdaten-APIs spezifisch sind.
Beispiel für den Dateizugriff Zeigt, wie Sie eine Datei erstellen, lesen, schreiben, kopieren und löschen.
Dateiauswahl-Beispiel Zeigt, wie Sie auf Dateien und Ordner zugreifen, indem sie dem Benutzer die Auswahl mit der Benutzeroberfläche ermöglichen und wie eine Datei gespeichert werden kann, damit der Benutzer den Namen, den Dateityp und den Speicherort einer zu speichernden Datei angeben kann.
JSON-Beispiel Zeigt, wie JavaScript Object Notation (JSON)-Objekte, Arrays, Zeichenfolgen, Zahlen und Booleane mithilfe des Windows.Data.Json-Namespace codiert und decodiert werden.
Zusätzliche Codebeispiele Wählen Sie Dateien, Ordner und Bibliotheken in der Dropdown-Liste "Kategorie" aus.