檔系統協助程式

Browse sample. 流覽範例

本文說明如何使用 .NET 多平臺應用程式 UI (.NET MAUI) IFileSystem 介面。 此介面提供可存取應用程式快取和資料目錄的協助程式方法,並協助存取應用程式套件中的檔案。

介面的預設實作 IFileSystem 可透過 FileSystem.Current 屬性取得。 IFileSystem介面和FileSystem類別都包含在 命名空間中Microsoft.Maui.Storage

使用文件系統協助程式

每個作業系統都會有應用程式快取和應用程式資料目錄的唯一路徑。 介面 IFileSystem 提供跨平臺 API 來存取這些目錄路徑。

快取目錄

取得應用程式的目錄來儲存快取資料。 快取數據可用於任何需要保存超過暫存數據的數據,但不應該是操作應用程式所需的數據,因為操作系統可能會清除此儲存體。

string cacheDir = FileSystem.Current.CacheDirectory;

應用程式資料目錄

若要取得應用程式最上層目錄,任何不是用戶數據檔案的檔案。 這些檔案會使用作業系統同步處理架構進行備份。

string mainDir = FileSystem.Current.AppDataDirectory;

配套的檔案

若要開啟套件組合至應用程式套件的檔案,請使用 OpenAppPackageFileAsync 方法並傳遞檔名。 這個方法會傳 Stream 回唯讀表示檔案內容。 下列範例示範如何使用 方法來讀取檔案的文字內容:

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

將配套檔案複製到應用程式資料資料夾

您無法修改應用程式的配套檔案。 但是您可以將配套檔案 複製到快取目錄應用程式資料目錄。 下列範例會使用 OpenAppPackageFileAsync 將配套檔案複製到應用程式資料資料夾:

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

平台差異

本節說明文件系統協助程序的平臺特定差異。

  • FileSystem.CacheDirectory
    回目前內容的 CacheDir

  • FileSystem.AppDataDirectory
    傳回目前內容的 FilesDir,這是使用從 API 23 和更新版本開始的自動備份進行備份。

  • FileSystem.OpenAppPackageFileAsync
    使用MauiAsset建置動作新增至專案的檔案,可以使用此方法開啟。 .NET MAUI 專案會將 Resources\Raw 資料夾中的任何檔案處理為 MauiAsset

    方法 FileSystem.OpenPackageFileAsync 無法藉由存取 Result.Length 屬性來取得 Android 上的數據流長度。 相反地,您必須讀取整個數據流,並計算有多少位元組,才能取得資產的大小。