次の方法で共有


ファイルのプロパティを取得する

重要な API

StorageFile オブジェクトで表されるファイルのプロパティ (最上位、基本、拡張) を取得します。

完全なサンプルについては、 ファイル アクセスのサンプルを参照してください。

[前提条件]

  • ユニバーサル Windows プラットフォーム (UWP) アプリの非同期プログラミングについて

    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 コレクションを返します。 その後、各拡張プロパティは、名前またはインデックスによってコレクションから取得されます。

次の使用例は、Pictures ライブラリ内のすべてのファイルを列挙し、List オブジェクト内の必要なプロパティ (DataAccessed および FileOwner) の名前を指定し、その 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);
    }
}