Partager via


Accéder aux fichiers et dossiers avec le SDK d’application Windows et les API WinRT

Les applications SDK d'applications Windows peuvent exploiter les API WinRT pour lire et écrire des paramètres d'application, des sélecteurs de fichiers et de dossiers, ainsi que des emplacements sécurisés tels que la bibliothèque Vidéo/Musique. En outre, toute application de bureau empaquetée peut utiliser à la fois les API WinRT et Win32 dans le Kit de développement logiciel (SDK) Windows, ainsi que les API fournies dans le Kit de développement logiciel (SDK) .NET. Cet article fournit des conseils sur l’utilisation des API de stockage WinRT pour interroger des fichiers et des dossiers, récupérer des propriétés de fichier et utiliser la bibliothèque Images .

Interroger des fichiers et des dossiers

L’exemple suivant montre comment utiliser les API StorageFolder et StorageFile pour interroger la bibliothèque documents pour les fichiers et dossiers. L’exemple utilise la GetFilesInFolderAsync méthode pour effectuer une itération récursive dans la structure de dossiers et ajouter les noms de fichiers à un StringBuilder objet.

using System.Text;
using Windows.Storage;
...
private async Task<string> GetDocumentsContentsAsync()
{
    StorageFolder docsFolder = KnownFolders.DocumentsLibrary;
    StringBuilder outputBuilder = new();
    await GetFilesInFolderAsync(docsFolder, outputBuilder);

    return outputBuilder.ToString();
}

private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
    IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();

    foreach (var item in storageItem)
    {
        if (item is StorageFolder)
        {
            await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
        }
        else
        {
            outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
        }
    }
}

Obtenir les propriétés de fichier de base

L’exemple suivant prend la GetFilesInFolderAsync méthode de l’exemple précédent et ajoute la possibilité de récupérer la taille et la date de modification de fichier pour chaque fichier. L’exemple utilise l’API BasicProperties pour récupérer la taille de fichier et la date modifiées pour chaque fichier, mettre en forme la taille du fichier et ajouter la taille et la date modifiées à l’objet StringBuilder après chaque nom de fichier et de dossier.

using System.Text;
using Windows.Storage;
using Windows.Storage.FileProperties;
...
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
    IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();

    foreach (var item in storageItem)
    {
        if (item is StorageFolder)
        {
            await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
        }
        else
        {
            outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");

            // Append each file's size and date modified.
            BasicProperties basicProperties = await item.GetBasicPropertiesAsync();
            string fileSize = string.Format("{0:n0}", basicProperties.Size);
            outputBuilder.AppendLine($" - File size: {fileSize} bytes");
            outputBuilder.AppendLine($" - Date modified: {basicProperties.DateModified}");
        }
    }
}

Utilisation de la bibliothèque d'images

Dans cet exemple, l’application est configurée pour recevoir des notifications lorsque la bibliothèque Images est mise à jour. L’exemple utilise l’API StorageLibrary pour récupérer la bibliothèque d’images et l’événement DefinitionChanged pour recevoir des notifications lorsque la bibliothèque est mise à jour. L’événement DefinitionChanged est appelé lorsque la liste des dossiers de la bibliothèque active change. L’exemple utilise la propriété de Folders la bibliothèque pour itérer dans les dossiers de la bibliothèque Images et écrire le nom du dossier dans la console.

using Windows.Storage;
...
private async Task Configure()
{
    StorageLibrary picturesFolder = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
    picturesFolder.DefinitionChanged += picturesFolder_DefinitionChanged;
}
private void picturesFolder_DefinitionChanged(StorageLibrary sender, object args)
{
    foreach (StorageFolder item in sender.Folders)
    {
        Console.WriteLine($"Folder {item.Name} found.");
    }
}

Voir aussi

Accéder aux fichiers et dossiers avec le SDK d’application Windows et les API .NET

Fichiers, dossiers et bibliothèques avec le Kit de développement logiciel (SDK) d’application Windows