檔系統協助程式
本文說明如何使用 .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();
}
下列範例示範從應用程式套件開啟配套字型檔案:
await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");
將配套檔案複製到應用程式資料資料夾
您無法修改應用程式的配套檔案。 但是您可以將配套檔案 複製到快取目錄 或 應用程式資料目錄。 下列範例會使用 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 上的數據流長度。 相反地,您必須讀取整個數據流,並計算有多少位元組,才能取得資產的大小。