Recuperare le proprietà di un file

API importanti

Puoi ottenere le proprietà (di livello superiore, di base ed estese) per i file rappresentati da oggetti StorageFile.

Nota

Per un esempio completo, vedi l'esempio di accesso a file.

Prerequisiti

  • Familiarità con la programmazione asincrona per le app UWP (Universal Windows Platform)

    Per informazioni su come scrivere app asincrone in C# o Visual Basic, vedere Chiamare API asincrone in C# o Visual Basic. Per scoprire come scrivere app asincrone in C++, vedere Programmazione asincrona in C++.

  • Autorizzazioni di accesso al percorso

    Ad esempio, per il codice di questi esempi è necessaria la funzionalità picturesLibrary. Per il percorso file, tuttavia, può essere necessaria una funzionalità diversa o nessuna funzionalità. Per scoprire di più, vedere Autorizzazioni accesso file.

Recupero delle proprietà di primo livello di un file

Molte proprietà di file di primo livello sono accessibili come membri della classe StorageFile. Queste proprietà includono gli attributi dei file, il tipo di contenuto, la data di creazione, il nome visualizzato, il tipo di file e così via.

Nota

Ricorda di dichiarare la funzionalità picturesLibrary.

Questo esempio enumera tutti i file nella raccolta Immagini, accedendo ad alcune delle proprietà di primo livello di ogni 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);
}

Recupero delle proprietà di base di un file

Molte proprietà di file di base vengono ottenute richiamando prima il metodo StorageFile.GetBasicPropertiesAsync. Questo metodo restituisce un oggetto BasicProperties, che definisce le proprietà per le dimensioni dell'elemento (file o cartella) e dell'ultima modifica dell'elemento.

Questo esempio enumera tutti i file nella raccolta Immagini, accedendo ad alcune delle proprietà di base di ogni 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);
}

Recupero delle proprietà estese di un file

A parte le proprietà di primo livello e di base dei file, esistono molte proprietà associate al contenuto del file. Queste proprietà estese sono accessibili chiamando il metodo BasicProperties.RetrievePropertiesAsync. Un oggetto BasicProperties viene ottenuto chiamando la proprietà StorageFile.Properties. Mentre le proprietà di livello superiore e di base dei file sono accessibili come proprietà di una classe, rispettivamente StorageFile e BasicProperties, le proprietà estese vengono ottenute passando una raccolta IEnumerable di oggetti String che rappresentano i nomi delle proprietà da recuperare al metodo BasicProperties.RetrievePropertiesAsync. Questo metodo restituisce quindi un insieme IDictionary. Ogni proprietà estesa viene quindi recuperata dalla raccolta in base al nome o all'indice.

Questo esempio enumera tutti i file nella raccolta Immagini, specifica i nomi delle proprietà desiderate (DataAccessed e FileOwner) in un oggetto List, passa tale oggetto List aBasicProperties.RetrievePropertiesAsync per recuperare tali proprietà e quindi recupera tali proprietà in base al nome dall'oggetto IDictionary restituito.

Vedi Proprietà principali di Windows per un elenco completo delle proprietà estese di un file.

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