2010-08-02 4 views
8

J'ai un dossier dans lequel de nouveaux fichiers sont continuellement sauvegardés. En Java, quel est le meilleur moyen de détecter les changements dans le système de fichiers (par exemple un dossier spécifié dans lequel les fichiers sont sauvegardés) et ajouter les fichiers nouvellement arrivés à une structure de données de file d'attente afin que je puisse traiter séquentiellement chaque fichier entrant.Java détecter les modifications dans le système de fichiers

Je suis conscient de la fonction listFiles() dans la classe File mais en l'utilisant, je ne peux obtenir que des fichiers disponibles à un instant donné. Bien sûr, je peux continuellement interroger le dossier et obtenir la liste des fichiers en utilisant un thread. Mais est-ce le meilleur moyen ou y at-il un meilleur moyen d'accomplir cela.

+0

Question plus générique, qui ne nécessite pas de répertoires spécifiques: http://stackoverflow.com/questions/494869/file-changed-listener-in-java –

Répondre

8

en continu est la polling façon de le faire en Java à partir de maintenant - mais ne pas interroger trop souvent, il peut être une opération assez lourde si le répertoire contient beaucoup des entrées.

JDK 7 aura une API spécifique pour faire juste ce java.nio.file.WatchFile

+2

+1 pour WatchFile –

+2

Vous pourriez avoir lié à JavaDoc instaed de une recherche google stupide. – Sylar

+0

L'interrogation continue est une mauvaise idée. Je recommande d'utiliser JNotify, qui tape dans les notifications du système de fichiers. – Arnelism

4

Il n'y a malheureusement pas de façon standard de le faire jusqu'à ce que JDK7 sorte. Mais il existe des bibliothèques disponibles sur Internet qui utilisent les fonctions natives des différents systèmes d'exploitation pour ce faire.

Les bibliothèques que j'ai regardé sont jPoller et jNotify Mais à la fin j'ai fini simplement interroger le répertoire qui était intéressant pour moi quand je devais le faire.

Questions connexes