Filsystemhjälpare

Bläddra bland exempel. Bläddra i exemplet

Den här artikeln beskriver hur du kan använda gränssnittet för .NET Multi-platform App UI (.NET MAUI). IFileSystem Det här gränssnittet innehåller hjälpmetoder som kommer åt appens cache- och datakataloger och hjälper dig att komma åt filer i apppaketet.

Standardimplementeringen av IFileSystem gränssnittet är tillgänglig via egenskapen FileSystem.Current . IFileSystem Både gränssnittet och FileSystem klassen finns i Microsoft.Maui.Storage namnområdet.

Använda filsystemhjälpare

Varje operativsystem har unika sökvägar till appcachen och appdatakatalogerna. Gränssnittet IFileSystem tillhandahåller ett plattformsoberoende API för åtkomst till dessa katalogsökvägar.

Cache-katalog

Hämta programmets katalog för att lagra cachedata. Cachedata kan användas för alla data som behöver sparas längre än temporära data, men som inte ska vara data som krävs för att använda appen, eftersom operativsystemet kan rensa lagringen.

string cacheDir = FileSystem.Current.CacheDirectory;

Appdatakatalog

Hämta appens toppnivåkatalog för filer som inte är användardatafiler. Dessa filer säkerhetskopieras med operativsystemets synkroniseringsramverk.

string mainDir = FileSystem.Current.AppDataDirectory;

Paketerade filer

Om du vill öppna en fil som paketeras i apppaketet använder du OpenAppPackageFileAsync metoden och skickar filnamnet. Den här metoden returnerar en skrivskyddad Stream som representerar filinnehållet. I följande exempel visas hur du använder en metod för att läsa textinnehållet i en fil:

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();
}

I följande exempel visas hur du öppnar en paketerad teckensnittsfil från apppaketet:

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

Kopiera en buntad fil till appens datamapp

Du kan inte ändra en apps paketerade fil. Men du kan kopiera en paketerad fil till cachekatalogen eller appdatakatalogen. I följande exempel används OpenAppPackageFileAsync för att kopiera en paketerad fil till appens datamapp:

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);
}

Plattformsskillnader

I det här avsnittet beskrivs de plattformsspecifika skillnaderna med filsystemhjälparna.

  • FileSystem.CacheDirectory
    Returnerar CacheDir för den aktuella kontexten.

  • FileSystem.AppDataDirectory
    Returnerar FilesDir för den aktuella kontexten, som säkerhetskopieras med Auto Backup som startar i API 23 och högre.

  • FileSystem.OpenAppPackageFileAsync
    Filer som lades till i projektet med Build Action of MauiAsset kan öppnas med den här metoden. .NET MAUI-projekt bearbetar alla filer i mappen Resources\Raw som mauiAsset.

    Metoden FileSystem.OpenPackageFileAsync kan på Android inte hämta längden på dataströmmen genom att komma åt Result.Length-egenskapen. I stället måste du läsa hela dataströmmen och räkna hur många byte det finns för att få tillgångsstorleken.