Sdílet prostřednictvím


Pomocné rutiny systému souborů

Projděte si ukázku. Procházení ukázky

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

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í akcesestavení 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 k Result.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.