重要な API
- StorageFile.GetBasicPropertiesAsync
- StorageFile.Properties
- StorageItemContentProperties.RetrievePropertiesAsync
StorageFile オブジェクトで表されるファイルのプロパティ (最上位、基本、拡張) を取得します。
注
完全なサンプルについては、 ファイル アクセスのサンプルを参照してください。
前提条件
WinUI アプリの非同期プログラミングについて
C# で非同期アプリを記述する方法については、「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 プロパティを呼び出すことによって取得されます)。最上位および基本ファイルのプロパティ (StorageFile と BasicProperties) はそれぞれクラスのプロパティとしてアクセスできますが、拡張プロパティは、BasicProperties.RetrievePropertiesAsync メソッドに取得されるプロパティの名前を表す String オブジェクトの IEnumerable コレクションを渡すことによって取得されます。 その後、このメソッドは 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);
}
}
Windows developer