Je voudrais être notifié lorsqu’un fichier a été modifié dans le système de fichiers. Je n’ai trouvé rien d’autre qu’un thread qui interroge la propriété fichier de lastModified et clairement, cette solution n’est pas optimale.
Réponses
Trop de publicités?J’ai écrit un analyseur de fichier journal avant, et j’ai trouvé que l’impact sur les performances du système de scrutin les attributs d’un fichier unique, quelques fois par seconde, est en réalité très faible.
Java 7, dans le cadre de NIO.2 a ajouté l' API WatchService
L’API WatchService est conçue pour les applications qui ont besoin d’être informé des événements de modification de fichier.
Le faible niveau de, la seule façon de modéliser cet utilitaire est d'avoir un fil d'interrogation sur un répertoire et de maintenir une veille sur les attributs du fichier. Mais vous pouvez utiliser des modèles pour élaborer un adaptateur pour un tel utilitaire.
Par exemple, les serveurs d'application j2ee comme Tomcat et d'autres ont une fonction de chargement automatique où dès que le descripteur de déploiement de changements ou de la classe de servlet changements redémarrage de l'application.
Vous pouvez utiliser les bibliothèques de ces serveurs que la plupart du code de tomcat est réutilisable et opensource.
Java communes-io a un FileAlterationObserver. Il fait du scrutin en combinaison avec un FileAlterationMonitor. Similaire à communes VFS. L’advantag est qu’il a beaucoup moins de dépendances.
Edit : moins dépendances n’est pas vrai, ils sont disponibles en option VFS. Mais il utilise java fichier au lieu de la couche d’abstraction VFS.