Share via


파일 속성 가져오기

중요 API

StorageFile 개체로 표시되는 파일의 최상위, 기본 및 확장 속성을 가져옵니다.

참고 항목

전체 샘플에 대해서는 파일 액세스 샘플을 참조하세요.

전제 조건

  • UWP(유니버설 Windows 플랫폼) 앱에 대한 비동기 프로그래밍 이해

    C# 또는 Visual Basic에서 비동기 앱을 작성하는 방법에 대한 자세한 내용은 C# 또는 Visual Basic에서 비동기식 API 호출을 참조하세요. C++에서 비동기 앱을 작성하는 방법은 C++의 비동기 프로그래밍을 참조하세요.

  • 위치에 대한 액세스 권한

    이러한 예제의 코드에는 picturesLibrary 기능이 필요하지만, 위치에는 다른 기능이 필요하거나 아무 기능도 필요하지 않을 수 있습니다. 자세한 내용은 파일 액세스 권한을 참조하세요.

파일의 최상위 속성 가져오기

대부분의 최상위 파일 속성은 StorageFile 클래스의 멤버로 액세스할 수 있습니다. 이러한 속성에는 파일 특성, 콘텐츠 형식, 만들기 날짜, 표시 이름, 파일 형식 등이 포함됩니다.

참고 항목

picturesLibrary 기능을 선언해야 합니다.

이 예제에서는 사진 라이브러리의 모든 파일을 열거하여 각 파일의 최상위 속성 중 몇 가지에 액세스합니다.

// Enumerate all files in the Pictures library.
var folder = Windows.Storage.KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();

foreach (Windows.Storage.StorageFile file in files)
{
    StringBuilder fileProperties = new StringBuilder();

    // Get top-level file properties.
    fileProperties.AppendLine("File name: " + file.Name);
    fileProperties.AppendLine("File type: " + file.FileType);
}

파일의 기본 속성 가져오기

StorageFile.GetBasicPropertiesAsync 메서드를 먼저 호출하여 많은 기본 파일 속성을 가져옵니다. 이 메서드는 항목 크기(파일 또는 폴더)와 항목이 마지막으로 수정된 시기에 대한 속성을 정의하는 BasicProperties 개체를 반환합니다.

이 예제에서는 사진 라이브러리의 모든 파일을 열거하고 각 파일의 기본 속성 중 몇 가지에 액세스합니다.

// Enumerate all files in the Pictures library.
var folder = Windows.Storage.KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();

foreach (Windows.Storage.StorageFile file in files)
{
    StringBuilder fileProperties = new StringBuilder();

    // Get file's basic properties.
    Windows.Storage.FileProperties.BasicProperties basicProperties =
        await file.GetBasicPropertiesAsync();
    string fileSize = string.Format("{0:n0}", basicProperties.Size);
    fileProperties.AppendLine("File size: " + fileSize + " bytes");
    fileProperties.AppendLine("Date modified: " + basicProperties.DateModified);
}

파일의 확장 속성 가져오기

최상위 및 기본 파일 속성 외에도 파일의 내용과 관련된 많은 속성이 있습니다. 이러한 확장 속성은 BasicProperties.RetrievePropertiesAsync 메서드를 호출하여 액세스합니다. BasicProperties 개체는 StorageFile.Properties 속성을 호출하여 가져옵니다. 최상위 및 기본 파일 속성은 각각 StorageFileBasicProperties 클래스의 속성으로 액세스할 수 있지만 확장 속성은 검색할 속성의 이름을 나타내는 String 개체의 IEnumerable 컬렉션을 BasicProperties.RetrievePropertiesAsync 메서드로 전달하여 가져옵니다. 그런 다음, 이 메서드는 IDictionary 컬렉션을 반환합니다. 그런 다음 각 확장 속성은 이름 또는 인덱스별로 컬렉션에서 검색됩니다.

다음은 사진 라이브러리의 모든 파일을 열거하고 List 개체에서 원하는 속성(DataAccessedFileOwner)의 이름을 지정하고, 해당 List 개체를 BasicProperties.RetrievePropertiesAsync에 전달하여 해당 속성을 검색한 다음, 반환된 IDictionary 개체에서 이름으로 해당 속성을 검색하는 예제입니다.

파일의 확장 속성 전체 목록은 Windows 핵심 속성을 참조하세요.

const string dateAccessedProperty = "System.DateAccessed";
const string fileOwnerProperty = "System.FileOwner";

// Enumerate all files in the Pictures library.
var folder = KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();

foreach (Windows.Storage.StorageFile file in files)
{
    StringBuilder fileProperties = new StringBuilder();

    // Define property names to be retrieved.
    var propertyNames = new List<string>();
    propertyNames.Add(dateAccessedProperty);
    propertyNames.Add(fileOwnerProperty);

    // Get extended properties.
    IDictionary<string, object> extraProperties =
        await file.Properties.RetrievePropertiesAsync(propertyNames);

    // Get date-accessed property.
    var propValue = extraProperties[dateAccessedProperty];
    if (propValue != null)
    {
        fileProperties.AppendLine("Date accessed: " + propValue);
    }

    // Get file-owner property.
    propValue = extraProperties[fileOwnerProperty];
    if (propValue != null)
    {
        fileProperties.AppendLine("File owner: " + propValue);
    }
}