다음을 통해 공유


Windows App SDK 및 WinRT API를 사용하여 파일 및 폴더에 액세스

패키지된 Windows 앱 SDK 앱은 WinRT APIs를 활용하여 앱 설정, 파일 및 폴더 선택기, Windows 앱 SDK 앱이 포함된 동영상/음악 라이브러리와 같은 특수 샌드박스 위치를 읽고 쓸 수 있습니다. 또한 패키지된 모든 데스크톱 앱은 Windows SDK의 WinRT 및 Win32 API와 .NET SDK에 제공된 API를 모두 활용할 수 있습니다. 이 문서에서는 WinRT 스토리지 API를 사용하여 파일 및 폴더를 쿼리하고, 파일 속성을 검색하고, 사진 라이브러리를 사용하는 방법에 대한 지침을 제공합니다.

파일 및 폴더 쿼리

다음 예제에서는 StorageFolderStorageFile API를 사용하여 파일 및 폴더에 대한 문서 라이브러리를 쿼리 하는 방법을 보여 줍니다. 이 예제에서는 GetFilesInFolderAsync 메서드를 사용하여 폴더 구조를 재귀적으로 반복하고 파일 이름을 StringBuilder 개체에 추가합니다.

using System.Text;
using Windows.Storage;
...
private async Task<string> GetDocumentsContentsAsync()
{
    StorageFolder docsFolder = KnownFolders.DocumentsLibrary;
    StringBuilder outputBuilder = new();
    await GetFilesInFolderAsync(docsFolder, outputBuilder);

    return outputBuilder.ToString();
}

private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
    IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();

    foreach (var item in storageItem)
    {
        if (item is StorageFolder)
        {
            await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
        }
        else
        {
            outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
        }
    }
}

기본 파일 속성 가져오기

다음 예제에서는 이전 예제에서 GetFilesInFolderAsync 메서드를 가져와 각 파일에 대해 수정된 파일 크기와 날짜를 검색하는 기능을 추가합니다. 이 예제에서는 BasicProperties API를 사용하여 각 파일에 대해 수정된 파일 크기와 날짜를 검색하고, 파일 크기의 서식을 지정하고, 각 파일 및 폴더 이름 뒤의 StringBuilder 개체에 수정된 크기와 날짜를 추가합니다.

using System.Text;
using Windows.Storage;
using Windows.Storage.FileProperties;
...
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
    IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();

    foreach (var item in storageItem)
    {
        if (item is StorageFolder)
        {
            await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
        }
        else
        {
            outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");

            // Append each file's size and date modified.
            BasicProperties basicProperties = await item.GetBasicPropertiesAsync();
            string fileSize = string.Format("{0:n0}", basicProperties.Size);
            outputBuilder.AppendLine($" - File size: {fileSize} bytes");
            outputBuilder.AppendLine($" - Date modified: {basicProperties.DateModified}");
        }
    }
}

그림 라이브러리 작업

이 예제에서는 사진 라이브러리가 업데이트될 때 알림을 받도록 앱이 구성됩니다. 이 예제에서는 StorageLibrary API를 사용하여 사진 라이브러리 및 DefinitionChanged 이벤트를 검색하여 라이브러리가 업데이트될 때 알림을 받습니다. 이 DefinitionChanged 이벤트는 현재 라이브러리의 폴더 목록이 변경될 때 호출됩니다. 이 예제에서는 라이브러리의 Folders 속성을 사용하여 사진 라이브러리의 폴더를 반복하고 폴더 이름을 콘솔에 씁니다.

using Windows.Storage;
...
private async Task Configure()
{
    StorageLibrary picturesFolder = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
    picturesFolder.DefinitionChanged += picturesFolder_DefinitionChanged;
}
private void picturesFolder_DefinitionChanged(StorageLibrary sender, object args)
{
    foreach (StorageFolder item in sender.Folders)
    {
        Console.WriteLine($"Folder {item.Name} found.");
    }
}

참고 항목

Windows App SDK 및 .NET API를 사용하여 파일 및 폴더에 액세스

Windows App SDK가 포함된 파일, 폴더 및 라이브러리