Partager via


Obtenir les propriétés du fichier

API importantes

Obtenez les propriétés (de niveau supérieur, de base et étendues) d’un fichier représenté par un objet StorageFile.

Notes

Pour un exemple complet, voir l’Exemple d’accès aux fichiers.

Prérequis

  • Comprendre la programmation asynchrone pour les applications pour la plateforme Windows universelle (UWP)

    Pour apprendre à écrire des applications asynchrones en C# ou Visual Basic, voir Appeler des API asynchrones en C# ou Visual Basic. Pour apprendre à écrire des applications asynchrones en C++, voir Programmation asynchrone en C++.

  • Autorisations d’accès à l’emplacement

    Par exemple, le code de ces exemples nécessite la fonctionnalité picturesLibrary, mais votre emplacement peut avoir besoin d’une autre fonctionnalité, voire d’aucune. Pour en savoir plus, voir Autorisations d’accès aux fichiers.

Obtention des propriétés de niveau supérieur d’un fichier

De nombreuses propriétés de fichier de haut niveau sont accessibles en tant que membres de la classe StorageFile. Ces propriétés incluent les attributs des fichiers, le type de contenu, la date de création, le nom d’affichage, le type de fichier, etc.

Notes

N'oubliez pas de déclarer la fonctionnalité picturesLibrary.

Cet exemple énumère tous les fichiers de la bibliothèque d’images, en accédant à quelques-unes des propriétés de niveau supérieur de chaque fichier.

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

Obtention des propriétés de base d’un fichier

De nombreuses propriétés de fichier de base sont obtenues en appelant d’abord la méthode StorageFile.GetBasicPropertiesAsync. Cette méthode retourne un objet BasicProperties qui définit les propriétés de taille de l’élément (fichier ou dossier), ainsi que la date de sa dernière modification.

Cet exemple énumère tous les fichiers de la bibliothèque d’images, en accédant à quelques-unes des propriétés de base de chacun d’eux.

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

Obtention des propriétés étendues d’un fichier

Outre les propriétés de fichier de haut niveau et de base, il existe de nombreuses propriétés associées au contenu du fichier. Ces propriétés étendues sont accessibles en appelant la méthode BasicProperties.RetrievePropertiesAsync. (Un objet BasicProperties est obtenu en appelant la propriété StorageFile.Properties.) Alors que les propriétés de fichier de niveau supérieur et de base sont accessibles en tant que propriétés d’une classe (StorageFile et BasicProperties, respectivement), les propriétés étendues sont obtenues en passant une collection IEnumerable d’objets String qui représentent les noms des propriétés à récupérer à la méthode BasicProperties.RetrievePropertiesAsync. Cette méthode retourne ensuite une collection IDictionary. Chaque propriété étendue est ensuite récupérée à partir de la collection par nom ou par index.

Cet exemple énumère tous les fichiers de la bibliothèque d’images, spécifie les noms des propriétés souhaitées (DataAccessed et FileOwner) dans un objet List, passe cet objet List à BasicProperties.RetrievePropertiesAsync pour récupérer ces propriétés, puis extrait celles-ci par nom de l’objet IDictionary retourné.

Pour obtenir la liste complète des propriétés étendues d'un fichier consultez Propriétés principales de 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);
    }
}