Pomocnicy systemu plików
W tym artykule opisano sposób używania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI). IFileSystem
Ten interfejs udostępnia metody pomocnicze, które uzyskują dostęp do pamięci podręcznej i katalogów danych aplikacji oraz ułatwiają dostęp do plików w pakiecie aplikacji.
Domyślna implementacja interfejsu IFileSystem
jest dostępna za pośrednictwem FileSystem.Current
właściwości . Zarówno interfejs, jak IFileSystem
i FileSystem
klasa są zawarte w Microsoft.Maui.Storage
przestrzeni nazw.
Korzystanie z pomocników systemu plików
Każdy system operacyjny będzie miał unikatowe ścieżki do pamięci podręcznej aplikacji i katalogów danych aplikacji. Interfejs IFileSystem
udostępnia międzyplatformowy interfejs API umożliwiający uzyskiwanie dostępu do tych ścieżek katalogu.
Katalog pamięci podręcznej
Aby pobrać katalog aplikacji do przechowywania danych pamięci podręcznej. Dane pamięci podręcznej mogą być używane dla danych, które muszą być przechowywane dłużej niż dane tymczasowe, ale nie powinny być danymi wymaganymi do obsługi aplikacji, ponieważ system operacyjny może wyczyścić ten magazyn.
string cacheDir = FileSystem.Current.CacheDirectory;
Katalog danych aplikacji
Aby uzyskać katalog najwyższego poziomu aplikacji dla wszystkich plików, które nie są plikami danych użytkownika. Te pliki są kopiami zapasowymi za pomocą platformy synchronizacji systemu operacyjnego.
string mainDir = FileSystem.Current.AppDataDirectory;
Pliki w pakiecie
Aby otworzyć plik dołączony do pakietu aplikacji, użyj OpenAppPackageFileAsync
metody i przekaż nazwę pliku. Ta metoda zwraca tylko Stream do odczytu zawartość pliku. W poniższym przykładzie pokazano użycie metody do odczytania zawartości tekstowej pliku:
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();
}
W poniższym przykładzie pokazano otwarcie pliku czcionki dołączonej z pakietu aplikacji:
await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");
Kopiowanie pliku dołączonego do folderu danych aplikacji
Nie można zmodyfikować pliku dołączonego do aplikacji. Można jednak skopiować plik w pakiecie do katalogu pamięci podręcznej lub katalogu danych aplikacji. W poniższym przykładzie użyto OpenAppPackageFileAsync
metody do skopiowania pliku dołączonego do folderu danych aplikacji:
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);
}
Różnice między platformami
W tej sekcji opisano różnice specyficzne dla platformy dla pomocników systemu plików.
FileSystem.CacheDirectory
Zwraca wartość CacheDir bieżącego kontekstu.FileSystem.AppDataDirectory
Zwraca plik FilesDir bieżącego kontekstu, którego kopia zapasowa jest wykonywana przy użyciu funkcji automatycznej kopii zapasowej , począwszy od interfejsu API 23 i nowszych.FileSystem.OpenAppPackageFileAsync
Pliki dodane do projektu z akcją kompilacji zestawu MauiAsset można otworzyć za pomocą tej metody. Projekty MAUI platformy .NET będą przetwarzać dowolny plik w folderze Resources\Raw jako zestaw MauiAsset.Metoda
FileSystem.OpenPackageFileAsync
nie może uzyskać długości strumienia w systemie Android, korzystającResult.Length
z właściwości . Zamiast tego musisz odczytać cały strumień i policzyć liczbę bajtów, aby uzyskać rozmiar zasobu.