Freigeben über


Dateisystemhilfsprogramme

Beispiel durchsuchen.Durchsuchen Sie das Beispiel

In diesem Artikel wird beschrieben, wie Sie die .NET Multi-Platform App UI (.NET MAUI) IFileSystem-Schnittstelle verwenden können. Diese Schnittstelle bietet Hilfsmethoden, die auf den Cache und die Datenverzeichnisse der App zugreifen, und hilft beim Zugriff auf Dateien im App-Paket.

Die Standardimplementierung der IFileSystem-Schnittstelle ist über die Eigenschaft FileSystem.Current verfügbar. Sowohl die IFileSystem-Schnittstelle als auch die FileSystem-Klasse sind im Microsoft.Maui.Storage-Namespace enthalten.

Verwenden der Dateisystemhilfsprogramme

Jedes Betriebssystem verfügt über eindeutige Pfade zum Cache und zu den Datenverzeichnissen der App. Die IFileSystem-Schnittstelle stellt eine plattformübergreifende API für den Zugriff auf diese Verzeichnispfade bereit.

Cacheverzeichnis

So rufen Sie das Anwendungsverzeichnis zum Speichern von Cachedaten ab. Cachedaten können für alle Daten verwendet werden, die länger als temporäre Daten aufbewahrt werden müssen. Dabei sollte es sich aber nicht um Daten handeln, die für den App-Betrieb erforderlich sind, da dieser Speicher vom Betriebssystem gelöscht werden kann.

string cacheDir = FileSystem.Current.CacheDirectory;

App-Datenverzeichnis

So rufen Sie das oberste App-Verzeichnis für alle Dateien ab, die keine Benutzerdatendateien sind. Diese Dateien werden über das Synchronisierungsframework des Betriebssystems gesichert.

string mainDir = FileSystem.Current.AppDataDirectory;

Gebündelte Dateien

Verwenden Sie die Methode OpenAppPackageFileAsync, und übergeben Sie den Dateinamen, um eine im App-Paket gebündelte Datei zu öffnen. Diese Methode gibt eine schreibgeschützte Stream-Klasse zurück, die den Dateiinhalt darstellt. Das folgende Beispiel zeigt, wie mithilfe einer Methode der Textinhalt einer Datei gelesen wird:

public async Task<string> ReadTextFile(string filePath)
{
    using Stream fileStream = await FileSystem.Current.OpenAppPackageFileAsync(filePath);
    using StreamReader reader = new StreamReader(fileStream);

    return await reader.ReadToEndAsync();
}

Das folgende Beispiel veranschaulicht das Öffnen einer gebündelten Schriftartdatei aus dem App-Paket:

await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");

Kopieren einer gebündelten Datei in den App-Datenordner

Sie können die gebündelte Datei einer App nicht ändern. Sie können aber eine gebündelte Datei in das Cacheverzeichnis oder das App-Datenverzeichnis kopieren. Im folgenden Beispiel wird mit OpenAppPackageFileAsync eine gebündelte Datei in den App-Datenordner kopiert:

public async Task CopyFileToAppDataDirectory(string filename)
{
    // Open the source file
    using Stream inputStream = await FileSystem.Current.OpenAppPackageFileAsync(filename);

    // Create an output filename
    string targetFile = Path.Combine(FileSystem.Current.AppDataDirectory, filename);

    // Copy the file to the AppDataDirectory
    using FileStream outputStream = File.Create(targetFile);
    await inputStream.CopyToAsync(outputStream);
}

Plattformunterschiede

In diesem Abschnitt werden die plattformspezifischen Unterschiede bei Dateisystemhilfsprogrammen beschrieben.

  • FileSystem.CacheDirectory
    Gibt das Verzeichnis CacheDir des aktuellen Kontexts zurück.

  • FileSystem.AppDataDirectory
    Gibt das Verzeichnis FilesDir des aktuellen Kontexts zurück. Die Sicherung erfolgt mit der automatischen Sicherung ab API-Ebene 23 und höher.

  • FileSystem.OpenAppPackageFileAsync
    Mit dieser Methode können Dateien, die dem Projekt mit der Buildaktion von MauiAsset hinzugefügt wurden, geöffnet werden. .NET MAUI-Projekte verarbeiten alle Dateien im Ordner Resources\Raw als MauiAsset.

    Die Methode FileSystem.OpenPackageFileAsync kann die Streamlänge unter Android nicht abrufen, indem sie auf die Eigenschaft Result.Length zugreift. Stattdessen müssen Sie den gesamten Stream lesen und die Gesamtzahl der Bytes ermitteln, um die Größe der Ressource abzurufen.