Détecter les changements du système de fichiers sur partage Samba avec Java sous Windows
Question
pour un projet récent que je dois détecter les changements du système de fichiers sur un partage Samba cartographiés à partir de Java sur Windows: Creates, mises à jour et supprime. En ce moment je suis en utilisant un sondage de dossier qui tient à jour une liste des fichiers et leur horodatage modifié pour rechercher des événements.
Mais mon problème est que ce sondage dossier ne jette un œil dans le dossier à certains moments (toutes les 10 secondes par exemple), donc un fichier mis à jour peut être mis à jour deux fois entre deux sondages sans reconnaître.
Est-il possible d'obtenir des événements de fenêtres à l'intérieur de Java chaque fois qu'un événement de fichier occours sur ce mappep partage Samba?
Merci!
La solution
Java n'a rien dans le courant api IO pour traiter les notifications de fichiers de l'O / S.
Java 7 aura une nouvelle API IO JSR-203 qui a un API fichier montre qui sera soit native d'utilisation O / S notifications ou vote si les notifications ne sont pas pris en charge pour détecter les changements de fichiers.
En attendant, vous pouvez regarder pour voir si quelqu'un a mis en place une bibliothèque qui vous permet de connecter le notifications O / S via JNI. Je pense que IntelliJ IDEA utilise une lib native à cette fin.
Recherche sur Sourceforge J'ai trouvé jfilenotify mais je ai jamais utilisé.
Sinon, vous pouvez augmenter votre fréquence d'échantillonnage (mais cela va commencer à marteler votre système de fichiers) ou changer la façon dont vos fichiers sont écrits en ajoutant un numéro de version au nom du fichier / dossier afin que vous puissiez facilement dire quand quelque chose a changé.
Autres conseils
Selon cette entrée de forum TeamDev JNIWrapper est capable de faire ce que je veux. Je viens d'acheter une copie. Merci et
Greetz, Ghad