Dateisystemhilfsprogramme
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 EigenschaftResult.Length
zugreift. Stattdessen müssen Sie den gesamten Stream lesen und die Gesamtzahl der Bytes ermitteln, um die Größe der Ressource abzurufen.