Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.OpenPackageFileAsynckan på Android inte hämta längden på dataströmmen genom att komma åtResult.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.
Bläddra i exemplet