CommunityToolkit을 사용한 .NET MAUI의 파일 및 폴더 대화 상자 | Vladislav Antonyuk

File and Folder dialogs in .NET MAUI with CommunityToolkit - .NET Blog 글을 번역한 것입니다.

참고: 이 글은 DataArt의 선임 소프트웨어 엔지니어이자 .NET MAUI 커뮤니티 툴킷의 핵심 기여자인 블라디슬라브 안토니우크가 작성한 게스트 블로그 게시물입니다.

파일 및 폴더와 상호 작용하는 것은 수많은 애플리케이션에서 일상적인 작업이지만 지루한 플랫폼별 코드를 작성해야 하는 경우가 많습니다.

좋은 소식은 새로운 CommunityToolkit.Maui 버전 5.0에 모든 .NET MAUI 플랫폼에서 대상 폴더를 쉽게 선택하고 파일 시스템에 파일을 저장할 수 있는 향상된 버전의 FolderPickerFileSaver 클래스가 포함되어 있다는 점입니다.

FileSaver

FileSaver를 사용하면 애플리케이션에서 사용자에게 대상 폴더를 선택할 수 있는 편리한 대화 상자를 제공할 수 있습니다. 그런 다음 몇 줄의 코드만으로 문서, 이미지, 동영상 등 모든 파일 유형을 저장할 수 있습니다.

다음은 C#에서 FileSaver를 사용하는 방법의 예입니다.

using var stream = new MemoryStream(Encoding.Default.GetBytes("Hello from the Community Toolkit!"));
var fileSaveResult = await FileSaver.Default.SaveAsync("sample.txt", stream, cancellationToken);
if (fileSaveResult.IsSuccessful)
{
    await Toast.Make($"File is saved: {fileSaveResult.FilePath}").Show(cancellationToken);
}
else
{
    await Toast.Make($"File is not saved, {fileSaveResult.Exception.Message}").Show(cancellationToken);
}

이 코드는 사용자가 대상 파일 위치를 선택할 수 있는 파일 시스템 대화 상자를 열고 "sample.txt"라는 새 파일을 만든 다음 여기에 "Hello from the Community Toolkit!"라는 텍스트가 포함된 스트림을 작성합니다. 사용자는 필요에 따라 파일 이름을 변경할 수도 있습니다.


FileSaver는 모든 예외를 포착하고 작업 결과를 반환합니다. 그러나 사용자가 작업을 취소하는 것과 같은 특정 예외만 처리하려면 try/catch로 코드를 감싸고 EnsureSuccess 메서드를 호출하면 됩니다:

using var stream = new MemoryStream(Encoding.Default.GetBytes("Hello from the Community Toolkit!"));
try
{
    var fileSaverResult = await FileSaver.SaveAsync("initial-path", "sample.txt", stream, cancellationToken);
    fileSaverResult.EnsureSuccess();

    await Toast.Make($"File is saved: {fileSaverResult.FilePath}").Show(cancellationToken);
}
catch (Exception ex)
{
    await Toast.Make($"File is not saved, {ex.Message}").Show(cancellationToken);
}

FileSaver를 사용하는 더 완벽한 예는 제 MauiPaint 샘플 애플리케이션에 있습니다. macOS에서 작동하는 방식은 다음과 같습니다.

참고: Android 개발자는 파일 저장소 작업 권한을 제공해야 합니다.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

FolderPicker

FolderPickerCommunityToolkit.Maui의 일부로 제공되는 또 다른 강력한 기능으로, 사용자가 UI 대화 상자를 사용하여 파일 시스템에서 폴더를 선택할 수 있습니다. 개발자는 FolderPicker를 통해 선택한 폴더의 이름과 경로 등 폴더에 대한 정보를 쉽게 얻을 수 있습니다.

다음은 C#에서 FolderPicker를 사용하는 방법의 예입니다.

var folderPickerResult = await folderPicker.PickAsync(cancellationToken);
if (folderPickerResult.IsSuccessful)
{
    await Toast.Make($"Folder picked: Name - {folderPickerResult.Folder.Name}, Path - {folderPickerResult.Folder.Path}", ToastDuration.Long).Show(cancellationToken);
}
else
{
    await Toast.Make($"Folder is not picked, {folderPickerResult.Exception.Message}").Show(cancellationToken);
}

이 코드는 사용자에게 폴더를 선택하라는 메시지를 표시하며, 작업 결과는 “folderPickerResult” 변수에 저장됩니다.


다시 한 번 강조하지만, EnsureSuccess 메서드를 사용하는 것을 선호하는 경우 시도/잡기를 감싸는 것이 좋습니다.

try
{
    var folderPickerResult = await FolderPicker.Default.PickAsync("initial-path", cancellationToken);
    folderPickerResult.EnsureSuccess();
    await Toast.Make($"Folder picked: Name - {folderPickerResult.Folder.Name}, Path - {folderPickerResult.Folder.Path}", ToastDuration.Long).Show(cancellationToken);
}
catch (Exception ex)
{
    await Toast.Make($"Folder is not picked, {ex.Message}").Show(cancellationToken);
}

참고: Android 개발자는 파일 저장소 작업 권한을 제공해야 합니다.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

요약

FileSaver와 ``FolderPicker`는 CommunityToolkit.Maui 라이브러리의 일부로 제공되는 두 가지 강력한 새 도구입니다. 이 두 도구를 사용하면 개발자가 파일 시스템과 협업하여 파일과 폴더를 쉽게 관리할 수 있습니다. 평소와 마찬가지로 이 두 API에 대한 자세한 정보는 문서에서 확인할 수 있습니다.

C# 및 .NET MAUI로 작업하는 개발자라면 지금 바로 사용해 보고 OS 파일 시스템과의 통합을 개선하는 데 어떻게 도움이 될 수 있는지 알아보세요.

마지막으로, 버전 5.0의 전체 릴리스 정보를 확인하여 .NET MAUI 개발자를 위한 더 많은 유용한 리소스를 확인하세요.


4개의 좋아요