Share via


Obtener las propiedades de archivos

API importantes

Obtiene las propiedades —de nivel superior, básicas y extendidas— de un archivo representado mediante un objeto StorageFile.

Nota

Para obtener una muestra completa, consulte Muestra de acceso a archivos.

Requisitos previos

  • Comprender la programación asincrónica de las aplicaciones para Plataforma universal de Windows (UWP)

    Puedes aprender a escribir aplicaciones asincrónicas en C# o Visual Basic. Consulta Llamar a API asincrónicas en C# o Visual Basic. Para aprender a escribir aplicaciones asincrónicas en C++, consulta Programación asincrónica en C++.

  • Permisos de acceso a la ubicación

    Por ejemplo, el código de estos ejemplos requiere la funcionalidad picturesLibrary, pero es posible que la ubicación requiera una funcionalidad distinta o ninguna. Para más información, consulta Permisos de acceso de archivos.

Obtener las propiedades de nivel superior de un archivo

Muchas de las propiedades de archivo de nivel superior son accesibles como miembros de la clase StorageFile. Estas propiedades incluyen los atributos del archivo, el tipo de contenido, la fecha de creación, el nombre para mostrar, el tipo de archivo, etc.

Nota

Recuerda declarar la funcionalidad picturesLibrary.

Este ejemplo enumera todos los archivos de la biblioteca Imágenes al tener acceso a unas cuantas propiedades de nivel superior de cada archivo.

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

Obtener las propiedades básicas de un archivo

Muchas propiedades de archivo básicas se obtienen mediante una llamada al método StorageFile.GetBasicPropertiesAsync. Este método devuelve un objeto BasicProperties, que define propiedades para el tamaño del elemento (archivo o carpeta) y la última vez que se modificó el elemento.

Este ejemplo enumera todos los archivos de la biblioteca Imágenes y obtiene acceso a unas cuantas propiedades básicas de cada archivo.

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

Obtener las propiedades extendidas de un archivo

Además de las propiedades de archivo de nivel superior y básicas, hay muchas propiedades asociadas al contenido del archivo. Para acceder a estas propiedades extendidas hay que llamar al método BasicProperties.RetrievePropertiesAsync. (Un objeto BasicProperties se obtiene mediante una llamada a la propiedad StorageFile.Properties). Si bien se puede acceder a las propiedades de archivo de nivel superior y básico como propiedades de una clase, StorageFile y BasicProperties, respectivamente, las propiedades extendidas se obtienen al pasar una colección IEnumerable de objetos String que representan los nombres de las propiedades que deben recuperarse en el método BasicProperties.RetrievePropertiesAsync. A continuación, este método devuelve una colección IDictionary. Cada propiedad extendida se recupera entonces de la colección por el nombre o índice.

En este ejemplo se enumeran todos los archivos de la biblioteca de imágenes, se especifican los nombres de las propiedades deseadas (DataAccessed y FileOwner) en un objeto List, se pasa ese objeto List a BasicProperties.RetrievePropertiesAsync para recuperar esas propiedades y luego se recuperan por el nombre dichas propiedades del objeto IDictionary devuelto.

Consulta Windows Core Properties (Propiedades básicas de Windows) para obtener una lista completa de las propiedades extendidas de un archivo.

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