Obtenir les propriétés du fichier

API importantes

Obtenir des propriétés (de niveau supérieur, de base et étendue) pour un fichier représenté par un objet StorageFile.

Note

Pour obtenir un exemple complet, consultez l’exemple d’accès aux fichiers.

Prerequisites

  • Comprendre la programmation asynchrone pour les applications WinUI

    Vous pouvez apprendre à écrire des applications asynchrones en C#, voir Appeler des API asynchrones en C# ou Visual Basic. Pour savoir comment écrire des applications asynchrones en C++, consultez programmation asynchrone en C++.

  • permissions d’accès à l’emplacement

    Par exemple, le code de ces exemples nécessite la fonctionnalité picturesLibrary, mais votre emplacement peut nécessiter une fonctionnalité différente ou aucune fonctionnalité du tout. Pour en savoir plus, consultez les 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 niveau supérieur sont accessibles en tant que membres de la classe StorageFile . Ces propriétés incluent les attributs de fichiers, le type de contenu, la date de création, le nom complet, le type de fichier, et ainsi de suite.

Note

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

Cet exemple énumère tous les fichiers de la bibliothèque 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 la taille de l’élément (fichier ou dossier), ainsi que lorsque l’élément a été modifié pour la dernière fois.

Cet exemple énumère tous les fichiers de la bibliothèque Images, accédant à quelques-uns des propriétés de base 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 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 base et de niveau supérieur, 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 .) Bien que les propriétés de fichier de niveau supérieur et de base soient 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 représentant 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 de la collection par nom ou par index.

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

Consultez les propriétés Windows Core pour obtenir la liste complète des propriétés étendues d’un fichier.

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