Condividi tramite


Ottenere le proprietà di un file

API Importanti

Ottenere proprietà, di primo livello, di base e estese, per un file rappresentato da un oggetto StorageFile .

Annotazioni

Per un esempio completo, vedere l'esempio di accesso ai file .

Prerequisiti

  • Informazioni sulla 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 informazioni su come scrivere app asincrone in C++, vedere Programmazione asincrona in C++.

  • Autorizzazioni di accesso alla posizione

    Ad esempio, il codice in questi esempi richiede la funzionalità picturesLibrary , ma la posizione potrebbe richiedere una funzionalità diversa o nessuna funzionalità. Per altre informazioni, vedere Autorizzazioni di accesso ai file.

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

Annotazioni

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

Ottenere le 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 . Anche se le proprietà di file di livello superiore e di base sono accessibili come proprietà di una classe,StorageFile e BasicProperties, rispettivamente, le proprietà estese vengono ottenute passando un insieme IEnumerable di String oggetti che rappresentano i nomi delle proprietà che devono essere recuperate nel metodo BasicProperties.RetrievePropertiesA sync. Questo metodo restituisce quindi una collezione IDictionary. Ogni proprietà estesa viene quindi recuperata dalla raccolta in base al nome o all'indice.

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

Per un elenco completo delle proprietà estese di un file, vedi Le proprietà principali di 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);
    }
}