Partager via


Obtenir les propriétés du fichier

Les APIs importantes

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

Remarque

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

Conditions préalables

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

    Vous pouvez apprendre à écrire des applications asynchrones en C# ou En Visual Basic, consultez 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 plus d’informations, consultez 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.

Remarque

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 soit par nom, soit 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é.

Pour obtenir la liste complète des propriétés étendues d’un fichier, consultez propriétés Windows Core.

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