다음을 통해 공유


파일 속성 가져오기

주요 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 Core 속성을 참조하세요.

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);
    }
}