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 souboru.

Předpoklady

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

Řada vlastností souboru nejvyšší úrovně je přístupná jako členové 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 funkci 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 . (A BasicProperties objekt je získán pomocí volání StorageFile.Properties vlastnosti.) Zatímco vlastnosti nejvyšší úrovně a základního souboru jsou přístupné jako vlastnosti třídy, konkrétně StorageFile a BasicProperties, rozšířené vlastnosti lze získat předáním kolekce IEnumerable objektů String představujících názvy vlastností, které mají být načteny, metodě 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 vypíše všechny soubory v knihovně Obrázky, určuje názvy požadovaných vlastností (DataAccessed a FileOwner) v objektu List , předá objekt Listobjektu BasicProperties.RetrievePropertiesAsync k načtení těchto vlastností a potom tyto vlastnosti načte podle názvu z vráceného objektu IDictionary .

Úplný seznam rozšířených vlastností souboru najdete v části Vlastnosti 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);
    }
}