Pomocné rutiny systému souborů
Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). IFileSystem
Toto rozhraní poskytuje pomocné metody, které přistupuje k mezipaměti a datovým adresářům aplikace a pomáhá přistupovat k souborům v balíčku aplikace.
Výchozí implementace IFileSystem
rozhraní je k dispozici prostřednictvím FileSystem.Current
vlastnosti. Rozhraní IFileSystem
i FileSystem
třída jsou obsaženy v Microsoft.Maui.Storage
oboru názvů.
Použití pomocných rutin systému souborů
Každý operační systém bude mít jedinečné cesty k mezipaměti aplikace a datovým adresářům aplikací. Rozhraní IFileSystem
poskytuje rozhraní API pro různé platformy pro přístup k těmto adresářovým cestám.
Adresář mezipaměti
Pokud chcete získat adresář aplikace pro ukládání dat mezipaměti. Data mezipaměti je možné použít pro všechna data, která potřebují uchovávat déle než dočasná data, ale neměla by to být data, která jsou nutná pro provoz aplikace, protože operační systém může toto úložiště vymazat.
string cacheDir = FileSystem.Current.CacheDirectory;
Adresář dat aplikace
Pokud chcete získat adresář nejvyšší úrovně aplikace pro všechny soubory, které nejsou uživatelskými datovými soubory. Tyto soubory se zálohují pomocí architektury synchronizace operačního systému.
string mainDir = FileSystem.Current.AppDataDirectory;
Sbalené soubory
Pokud chcete otevřít soubor, který je součástí balíčku aplikace, použijte metodu OpenAppPackageFileAsync
a předejte název souboru. Tato metoda vrátí jen pro čtení Stream představující obsah souboru. Následující příklad ukazuje použití metody ke čtení textového obsahu souboru:
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();
}
Následující příklad ukazuje otevření souboru sbaleného písma z balíčku aplikace:
await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");
Zkopírování seskupovaného souboru do složky s daty aplikace
Soubor v balíčku aplikace nemůžete upravit. Soubor v balíčku ale můžete zkopírovat do adresáře mezipaměti nebo do datového adresáře aplikace. Následující příklad používá OpenAppPackageFileAsync
ke zkopírování seskupeného souboru do složky dat aplikace:
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);
}
Rozdíly mezi platformami
Tato část popisuje rozdíly specifické pro platformu s pomocnými rutinami systému souborů.
FileSystem.CacheDirectory
Vrátí CacheDir aktuálního kontextu.FileSystem.AppDataDirectory
Vrátí soubor FilesDir aktuálního kontextu, který se zálohuje pomocí automatického zálohování počínaje rozhraním API 23 a novějším.FileSystem.OpenAppPackageFileAsync
Soubory, které byly přidány do projektu pomocí akce sestavení MauiAsset lze otevřít pomocí této metody. Projekty .NET MAUI zpracují všechny soubory ve složce Resources\Raw jako MauiAsset.Metoda
FileSystem.OpenPackageFileAsync
nemůže získat délku datového proudu v Androidu přístupem kResult.Length
vlastnosti. Místo toho musíte přečíst celý datový proud a spočítat, kolik bajtů existuje, abyste získali velikost prostředku.