Dosya özelliklerini alma

Önemli API'ler

StorageFile nesnesiyle temsil edilen bir dosya için en üst düzey, temel ve genişletilmiş özellikleri alın.

Uyarı

Tam bir örnek için bkz. Dosya erişim örneği.

Önkoşullar

  • WinUI uygulamaları için asenkron programlamayı anlama

    C# dilinde zaman uyumsuz uygulamalar yazmayı öğrenebilirsiniz. Bkz. C# veya Visual Basic'te zaman uyumsuz API'leri çağırma. C++'ta zaman uyumsuz uygulamalar yazmayı öğrenmek için bkz. C++Zaman Uyumsuz programlama.

  • Konum erişim izinleri

    Örneğin, bu örneklerdeki kod için picturesLibrary özelliği gerekir, ancak konumunuz farklı bir özellik gerektirebilir veya hiç yetenek gerektirmeyebilir. Daha fazla bilgi edinmek için bkz. Dosya erişim izinleri.

Dosyanın en üst düzey özelliklerini alma

Birçok üst düzey dosya özelliğine StorageFile sınıfının üyeleri olarak erişilebilir. Bu özellikler arasında dosya öznitelikleri, içerik türü, oluşturma tarihi, görünen ad, dosya türü vb. bulunur.

Uyarı

picturesLibrary özelliğini bildirmeyi unutmayın.

Bu örnek, Resimler kitaplığındaki tüm dosyaları numaralandırır ve her dosyanın en üst düzey özelliklerinden birkaçlarına erişilir.

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

Dosyanın temel özelliklerini alma

Birçok temel dosya özelliği önce StorageFile.GetBasicPropertiesAsync yöntemi çağrılarak elde edilir. Bu yöntem, öğenin boyutuna (dosya veya klasör) ve öğenin en son ne zaman değiştirildiğine ilişkin özellikleri tanımlayan bir BasicProperties nesnesi döndürür.

Bu örnek, Resimler kitaplığındaki tüm dosyaları numaralandırır ve her dosyanın temel özelliklerinden birkaçını erişer.

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

Dosyanın genişletilmiş özelliklerini alma

Üst düzey ve temel dosya özelliklerinin yanı sıra, dosyanın içeriğiyle ilişkili birçok özellik vardır. Bu genişletilmiş özelliklere BasicProperties.RetrievePropertiesAsync yöntemi çağrılarak erişilir. ( Bir BasicProperties nesnesi StorageFile.Properties özelliği çağrılarak elde edilir.) Üst düzey ve temel dosya özellikleri bir sınıfın özellikleri olarak erişilebilir olsa da (sırasıyla StorageFile ve BasicProperties), genişletilmiş özellikler, BasicProperties.RetrievePropertiesAsync yöntemine alınacak özelliklerin adlarını temsil eden Bir IEnumerableString nesneleri koleksiyonu geçirilerek elde edilir. Bu yöntem daha sonra bir IDictionary koleksiyonu döndürür. Daha sonra her genişletilmiş özellik koleksiyondan ada veya dizine göre alınır.

Bu örnek, Resimler kitaplığındaki tüm dosyaları numaralandırır, bir List nesnesinde istenen özelliklerin (DataAccessed ve FileOwner) adlarını belirtir, bu List nesnesini BasicProperties.RetrievePropertiesAsync'e geçirerek bu özellikleri alır ve sonra bu özellikleri döndürülen IDictionary nesnesinden ada göre alır.

Dosyanın genişletilmiş özelliklerinin tam listesi için bkz. Windows Çekirdek Özellikleri .

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