Mendapatkan properti file

API penting

Dapatkan properti—tingkat atas, dasar, dan diperluas—untuk file yang diwakili oleh objek StorageFile.

Catatan

Untuk sampel lengkap, lihat Sampel akses file.

Prasyarat

  • Memahami pemrograman asinkron untuk aplikasi Platform Windows Universal (UWP)

    Anda dapat mempelajari cara menulis aplikasi asinkron di C# atau Visual Basic, lihat Memanggil API asinkron di C# atau Visual Basic. Untuk mempelajari cara menulis aplikasi asinkron di C++, lihat Pemrograman asinkron di C++.

  • Izin akses ke lokasi

    Misalnya, kode dalam contoh ini memerlukan kemampuan picturesLibrary , tetapi lokasi Anda mungkin memerlukan kemampuan yang berbeda atau tidak ada kemampuan sama sekali. Untuk mempelajari selengkapnya, lihat Izin akses file.

Mendapatkan properti tingkat atas file

Banyak properti file tingkat atas dapat diakses sebagai anggota kelas StorageFile. Properti ini mencakup atribut file, jenis konten, tanggal pembuatan, nama tampilan, jenis file, dan sebagainya.

Catatan

Ingatlah untuk mendeklarasikan kemampuan gambarLibrary .

Contoh ini menghitung semua file di pustaka Gambar, mengakses beberapa properti tingkat atas setiap file.

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

Mendapatkan properti dasar file

Banyak properti file dasar diperoleh dengan terlebih dahulu memanggil metode StorageFile.GetBasicPropertiesAsync. Metode ini mengembalikan objek BasicProperties , yang menentukan properti untuk ukuran item (file atau folder) serta kapan item terakhir diubah.

Contoh ini menghitung semua file di pustaka Gambar, mengakses beberapa properti dasar setiap file.

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

Mendapatkan properti file yang diperluas

Selain properti file tingkat atas dan dasar, ada banyak properti yang terkait dengan konten file. Properti yang diperluas ini diakses dengan memanggil metode BasicProperties.RetrievePropertiesAsync. (A Objek BasicProperties diperoleh dengan memanggil properti StorageFile.Properties.) Meskipun properti file tingkat atas dan dasar dapat diakses sebagai properti kelas—StorageFile dan BasicProperties, masing-masing—properti yang diperluas diperoleh dengan meneruskan kumpulan objek String IEnumerable yang mewakili nama properti yang akan diambil ke metode BasicProperties.RetrievePropertiesAsync. Metode ini kemudian mengembalikan koleksi IDictionary . Setiap properti yang diperluas kemudian diambil dari koleksi berdasarkan nama atau menurut indeks.

Contoh ini menghitung semua file di pustaka Gambar, menentukan nama properti yang diinginkan (DataAccessed dan FileOwner) dalam objek Daftar, meneruskan objek Daftar tersebut ke BasicProperties.RetrievePropertiesAsync untuk mengambil properti tersebut, lalu mengambil properti tersebut berdasarkan nama dari objek IDictionary yang dikembalikan.

Lihat Properti Windows Core untuk daftar lengkap properti file yang diperluas.

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