Sdílet prostřednictvím


Získání vlastností souboru

důležitá rozhraní API

Získejte vlastnosti – nejvyšší úroveň, základní a rozšířené – pro soubor reprezentovaný objektem StorageFile.

Poznámka:

Kompletní ukázku najdete v ukázce přístupu k souborům .

Požadavky

Získání vlastností nejvyšší úrovně souboru

Mnoho vlastností souboru nejvyšší úrovně je přístupné jako členy třídy StorageFile. Mezi tyto vlastnosti patří atributy souborů, typ obsahu, datum vytvoření, zobrazovaný název, typ souboru atd.

Poznámka:

Nezapomeňte deklarovat schopnost picturesLibrary.

Tento příklad vytvoří výčet všech souborů v knihovně Obrázky a přistupuje k několika vlastnostem nejvyšší úrovně každého souboru.

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

Získání základních vlastností souboru

Mnoho základních vlastností souboru jsou získány prvním voláním StorageFile.GetBasicPropertiesAsync metoda. Tato metoda vrátí BasicProperties objekt, který definuje vlastnosti pro velikost položky (soubor nebo složka) a také při poslední změně položky.

Tento příklad vytvoří výčet všech souborů v knihovně Obrázky a přistupuje k několika základním vlastnostem každého souboru.

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

Získání rozšířených vlastností souboru

Kromě vlastností nejvyšší úrovně a základního souboru existuje mnoho vlastností přidružených k obsahu souboru. K těmto rozšířeným vlastnostem se přistupuje voláním metody BasicProperties.RetrievePropertiesAsync. (Objekt BasicProperties je získán voláním vlastnosti StorageFile.Properties.) Zatímco vlastnosti souboru nejvyšší úrovně a základního souboru jsou přístupné jako vlastnosti třídy –StorageFile a BasicProperties– rozšířené vlastnosti jsou získány předáním IEnumerable kolekce String objektů představujících názvy vlastností, které se mají načíst do metody BasicProperties.RetrievePropertiesAsync. Tato metoda pak vrátí kolekci IDictionary. Každá rozšířená vlastnost se pak načte z kolekce podle názvu nebo indexu.

Tento příklad vyjmenuje všechny soubory v knihovně Obrázky, specifikuje názvy požadovaných vlastností (DataAccessed a FileOwner) v objektu Seznam, předá tento objekt Seznam do BasicProperties.RetrievePropertiesAsync pro načtení těchto vlastností a poté je načte podle názvu z vráceného objektu IDictionary.

Úplný seznam rozšířených vlastností souboru najdete v vlastností jádra systému Windows.

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