파일 시스템 도우미
이 문서에서는 .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
API 23 이상부터 자동 백업을 사용하여 백업되는 현재 컨텍스트의 FilesDir을 반환합니다.FileSystem.OpenAppPackageFileAsync
MauiAsset의 빌드 동작을 사용하여 프로젝트에 추가된 파일을 이 메서드로 열 수 있습니다. .NET MAUI 프로젝트는 Resources\Raw 폴더의 모든 파일을 MauiAsset으로 처리합니다.메서드는
FileSystem.OpenPackageFileAsync
속성에 액세스하여 Android에서 스트림의 길이를Result.Length
가져올 수 없습니다. 대신 전체 스트림을 읽고 자산의 크기를 가져오기 위해 얼마나 많은 바이트를 계산해야 합니다.
.NET MAUI