Comment suivre les fichiers et les dossiers récemment utilisés (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Effectuez le suivi des fichiers auxquels l’utilisateur accède fréquemment en les ajoutant à la liste des fichiers utilisés récemment de votre application. La plateforme gère mostRecentlyUsedList pour vous en triant les éléments en fonction du critère d’accès récent et en supprimant l’élément le plus ancien quand la limite des 25 éléments est atteinte. Toutes les applications ont leur propre mostRecentlyUsedList.

Généralement, la liste des fichiers utilisés récemment (MRU, Most Recently Used List) s’avèrera utile pour effectuer le suivi des fichiers utilisés récemment par vos utilisateurs, mais cette liste peut également servir à effectuer le suivi des dossiers. Vous pouvez stocker les fichiers et les dossiers dans votre liste MRU. Les éléments sont stockés en tant qu’objets IStorageItem ce qui signifie que les objets storageFile (qui représentent des fichiers) ainsi que les objets storageFolder (qui représentent des dossiers) peuvent être ajoutés à la liste MRU.

Prérequis

Accès aux fichiers et autorisations

Cette rubrique décrit les fichiers et emplacements auxquels votre application a accès par défaut, ainsi que les moyens d’accès à d’autres fichiers et emplacements.

Démarrage rapide : accès aux fichiers à l’aide de sélecteurs de fichiers

Cette rubrique explique comment permettre aux utilisateurs de sélectionner les fichiers que votre application peut utiliser. Les fichiers sélectionnés sont souvent ceux auxquels les utilisateurs reviennent inlassablement.

Exemples connexes

Exemple d’accès aux fichiers

Exemple de sélecteur de fichiers

Ajouter les fichiers sélectionnés à la liste MRU

Les fichiers que l’utilisateur sélectionne sont souvent des fichiers qu’il ouvre régulièrement. C’est pourquoi vous devez envisager l’ajout de ces fichiers à la liste des fichiers utilisés récemment de votre application (MRU). Vous pouvez facilement ajouter des fichiers à la liste MRU dès qu’ils sont sélectionnés, en suivant ces étapes.

  1. Dans votre application, identifiez le code qui permet à l’utilisateur de sélectionner des fichiers et/ou des dossiers.

    Si vous n’êtes pas sûr de l’emplacement de ce code ou si vous ne comprenez pas comment utiliser le sélecteur de fichiers pour accéder aux fichiers, lisez Démarrage rapide : accès aux fichiers à l’aide de sélecteurs de fichiers avant de poursuivre.

    Par exemple, si vous permettez à l’utilisateur de sélectionner un fichier unique, votre code doit ressembler à ce qui suit :

    var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
    openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
    openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
    openPicker.fileTypeFilter.replaceAll([".png", ".jpg", ".jpeg"]);
    
    // Open the picker for the user to pick a file
    openPicker.pickSingleFileAsync().done(function (pickedFile) {
        if (pickedFile) {
            // Process picked file       
        } else {
            // Canceled; no file was picked
        }
    });
    

    Lorsque l’appel asynchrone revient, pickSingleFileAsync dans l’exemple, le fichier que l’utilisateur a sélectionné est retourné en tant que storageFile. Nous utilisons done pour passer le fichier sélectionné (pickedFile dans l’exemple) à une fonction de traitement (la fonction anonyme dans l’exemple) où nous ajouterons le fichier à la mostRecentlyUsedList.

    Si vous permettez à l’utilisateur de sélectionner un dossier au lieu d’un fichier, votre code utilise pickSingleFolderAsync et le dossier sélectionné est retourné en tant que storageFolder.

  2. Ajoutez le fichier sélectionné à la liste MRU à l’intérieur de votre fonction de traitement avec une ligne de code telle que celle-ci :

    
            var mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.mostRecentlyUsedList.add(pickedFile, pickedFile.name);
    

    mostRecentlyUsedList.add est surchargé. Dans l’exemple, nous utilisons add(fileOrFolder, metadata) afin de pouvoir associer des métadonnées au fichier. La définition des métadonnées vous permet de capturer des informations supplémentaires telles que l’objet de l’élément. Dans l’exemple, nous capturons l’objet du fichier en affectant la "photo du profil" aux métadonnées. Vous pouvez également ajouter le fichier à la liste MRU sans métadonnées en appelant add(fileOrFolder).

    Chaque fois que vous add un élément à la liste MRU, la méthode retourne une chaîne d’identification unique, appelée jeton, qui est utilisée pour récupérer l’élément. Dans l’exemple, nous capturons ce jeton dans la variable locale mruToken, mais nous ne faisons rien d’autre avec.

    Astuce   Vous utilisez un jeton pour récupérer un élément de la liste MRU, c’est pourquoi vous devez envisager d’enregistrer celui-ci dans les données de l’application en vue d’une utilisation ultérieure. Par exemple, si votre application ajoute une photo de profil à la liste MRU (comme dans l’exemple), vous souhaitez peut-être enregistrer le jeton dans une liste au sein des données de l’application où vous effectuez le suivi des images de profil de l’utilisateur. Pour en savoir plus sur les données d’application, voir Gestion des données d’application.

     

    Votre fonction de traitement doit ressembler à ceci :

    openPicker.pickSingleFileAsync().done(function (pickedFile) {
        if (pickedFile) {
            // Add picked file to MRU
            var mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.mostRecentlyUsedList.add(pickedFile, pickedFile.name);
    
            // Continue processing picked file      
        } else {
            // Canceled; no file was picked
        }
    });
    

Utiliser les jetons pour récupérer les éléments de la liste MRU

Pour récupérer un élément de la mostRecentlyUsedList, vous avez besoin du jeton pour cet élément. Vous devez utiliser la méthode de récupération la plus appropriée selon l’élément concerné :

Par exemple, nous obtenons le jeton pour le premier élément, un fichier, dans notre liste MRU, puis nous utilisons le jeton pour récupérer un storageFile qui représente ce fichier, avec ce code :

var mruFirstToken = Windows.Storage.AccessCache.StorageApplicationPermissions.mostRecentlyUsedList.entries.first.token;
Windows.Storage.AccessCache.StorageApplicationPermissions.mostRecentlyUsedList.getFileAsync(mruFirstToken).done(
    function (retrievedFile) {
        // Process retrieved file
    },
    function (error) {
        // Handle errors 
    }
);

Dans l’exemple, nous savons que le premier élément est un fichier car nous avons uniquement ajouté un fichier à la mostRecentlyUsedList.

Utiliser les jetons pour récupérer tous les éléments de la liste MRU

Vous pouvez récupérer le jeton pour chaque élément de la liste en itérant les entrées de la façon suivante :

var mruEntries = Windows.Storage.AccessCache.StorageApplicationPermissions.mostRecentlyUsedList.entries;
if (mruEntries.size > 0) {
    mruEntries.forEach(function (entry) {
        var mruToken = entry.token;
        // Continue processing the MRU entry
    });
} else {
    // Handle empty MRU
}

Ces entrées sont des structures accessListEntry qui contiennent le jeton et les métadonnées pour un élément. Les entrées ne contiennent pas l’élément lui-même et ne peuvent pas être utilisées pour récupérer l’élément associé directement.

À la place, vous pouvez utiliser la accessListEntry pour récupérer le jeton pour un élément associé, puis récupérer un élément en utilisant l’une des méthodes répertoriées dans la section précédente, Utiliser les jetons pour récupérer les éléments de la liste MRU. Dans l’exemple, nous capturons le jeton pour chaque entrée dans la variable locale mruToken, mais nous ne faisons rien d’autre avec.

Les métadonnées stockées dans une accessListEntry est une chaîne comprenant des informations supplémentaires sur l’élément. Vous pouvez spécifier les informations lorsque vous ajoutez un élément à la mostRecentlyUsedList.

Remarques

Suppression d’éléments de la liste MRU lorsque la limite des 25 éléments est atteinte

Lorsque cette limite est atteinte et que vous essayez d’ajouter un nouvel élément, Windows supprime automatiquement l’élément le plus ancien (l’élément auquel l’utilisateur a accédé dans un passé le plus lointain possible). Vous n’avez donc pas à supprimer un élément avant d’en ajouter un autre, même si la liste MRU contient le nombre maximal d’éléments (25).

Maintien de l’accès aux fichiers et aux dossiers au-delà de la limite des 25 éléments

Outre la liste MRU, votre application comporte une liste d’accès futur (futureAccessList) que vous pouvez utiliser pour maintenir l’accès de votre application aux fichiers et aux dossiers qui ne seraient pas accessible autrement.

Lorsque l’utilisateur sélectionne un fichier ou un dossier, vous devez envisager l’ajout de cet élément à la mostRecentlyUsedList et la futureAccessList de votre application. L’ajout d’un fichier ou d’un dossier à la futureAccessList permet de garantir que votre application maintienne l’accès à l’élément même si l’utilisateur n’y retourne pas fréquemment.

Vous travaillez différemment avec la futureAccessList et la MRU dans les deux cas clés suivants :

  • La futureAccessList peut conserver jusqu’à 1 000 éléments.
  • À la différence de la MRU, la plateforme ne gère pas la propriété futureAccessList pour vous. Lorsque vous avez atteint la limite des 1 000 éléments, vous devez supprimer un élément de la liste avant d’en ajouter un autre. Pour ce faire, utilisez la méthode remove.

Toutes les applications ont leurs propres mostRecentlyUsedList et futureAccessList par défaut.