Compartir a través de


Obtener las propiedades de archivos

Las APIs importantes

Obtiene propiedades (nivel superior, básico y extendido) para un archivo representado por un objeto StorageFile.

Nota:

Para obtener un ejemplo completo, consulte el ejemplo de acceso a archivos.

Prerrequisitos

  • Descripción de la programación asincrónica para aplicaciones WinUI

    Puede aprender a escribir aplicaciones asincrónicas en C#, consulte Llamada a API asincrónicas en C# o Visual Basic. Para obtener información sobre cómo escribir aplicaciones asincrónicas en C++, consulte 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 la ubicación puede requerir una funcionalidad diferente o ninguna funcionalidad. Para más información, consulte Permisos de acceso a archivos.

Obtención de las propiedades de nivel superior de un archivo

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

Nota:

Recuerde declarar la funcionalidad picturesLibrary.

En este ejemplo se enumeran todos los archivos de la biblioteca imágenes, con acceso a algunas de las 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);
}

Obtención de las propiedades básicas de un archivo

Muchas propiedades básicas de archivo se obtienen llamando primero al método StorageFile.GetBasicPropertiesAsync . Este método devuelve un objeto BasicProperties , que define las propiedades para el tamaño del elemento (archivo o carpeta), así como cuando se modificó por última vez el elemento.

En este ejemplo se enumeran todos los archivos de la biblioteca imágenes, con acceso a algunas de las 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);
}

Obtención de las propiedades extendidas de un archivo

Aparte de las propiedades de archivo de nivel superior y básico, hay muchas propiedades asociadas al contenido del archivo. Para acceder a estas propiedades extendidas, se llama al método BasicProperties.RetrievePropertiesAsync . (Un objeto BasicProperties se obtiene llamando a la propiedad StorageFile.Properties ). Aunque las propiedades básicas y de nivel superior son accesibles como propiedades de una clase (StorageFile y BasicProperties, respectivamente), las propiedades extendidas se obtienen pasando una colección IEnumerable de objetos String que representan los nombres de las propiedades que se van a recuperar en el método BasicProperties.RetrievePropertiesAsync. A continuación, este método devuelve una colección IDictionary . A continuación, cada propiedad extendida se recupera de la colección por nombre o por índice.

En este ejemplo se enumeran todos los archivos de la biblioteca 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, a continuación, se recuperan esas propiedades por nombre del objeto IDictionary devuelto.

Consulte Propiedades de Windows Core 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);
    }
}