|
||||
L'API VFS |
Exemple de recherche simple avec VFSDans cette partie nous allons détailler un fonctionnalité avancée de VFS qui permet d'effectuer une recherche de fichier selon différents critères. L'API VFS offre en effet certaines possibilités
intéressantes concernant la recherche. Problèmes liés au cacheCe système comporte une limitation non négligeable. En effet, la gestion du cache par l'API VFS est encore assez limité. Par exemple il n'existe aucun mécanisme permettant de supprimer ou de modifier un fichier qui se trouve dans le cache. Cela pose un gros problème : admettons que l'utilisateur souhaite supprimer un fichier nommé 'toto.txt'. Il ne sait pas ou se trouve ce fichier et effectue une recherche. Après avoir trouvé l'emplacement du fichier, l'utilisateur le supprime. Si l'utilisateur effectue une seconde recherche sur les même répertoires que précédemment, le fichier toto.txt se trouvera encore dans le cache alors qu'il n'existe plus physiquement. Principe de fonctionnementL'utilisation de l'API VFS pour la recherche
est effectivement très simple. Il suffit pour cela d'implémenter
une interface nommée FileSelector. boolean includeFile(FileSelectInfo fileinfo); Cette méthode permet de valider si oui ou non le fichier contenu dans l'interface FileSelectInfo correspond aux critères de recherche. Dans ce cas, on doit retourner la valeur booléenne true, de manière à sélectionner le fichier. boolean traverseDescendents(FileSelectInfo fileinfo); Cette méthode permet de savoir si l'on descend ou non dans l'arborescence de ce repértoire pour la recherche. Pour effectuer une recherche récursive, il suffit de retourner la valeur booléenne true. Cette interface est utilisée par la méthode findFiles( FileSelector searchSelector) de la classe FileObject. Cette méthode retourne un tableau de FileObject permettant d'obtenir les fichiers correspondant à la recherche. Un peu de code ...Voici un exemple de classe implantant l'interface FileSelector et permettant d'effectuer une recherche (récursive ou non) par nom et/ou extension. Une archive zip contenant un exemple complet de recherche VFS avec une fenêtre de dialogue en SWT est disponible ICI. public class MyFileSelector implements FileSelector { /* /* } |
|||
Flavien Bach |