Udostępnij za pośrednictwem


Pomocnicy systemu plików

Przeglądaj przykład. Przeglądanie przykładu

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ąc Result.Length z właściwości . Zamiast tego musisz odczytać cały strumień i policzyć liczbę bajtów, aby uzyskać rozmiar zasobu.