8
votes

Détecter les fichiers nouvellement créés via Java en temps réel

Utilisation de JDK 7 J'ai eu le succès de regarder des annuaires spécifiques pour de nouvelles créations de fichiers, des suppressions et des modifications à l'aide de java.nio.file.Standardwatcheventkinds. *

J'espère que quelqu'un peut savoir un moyen d'obtenir Java pour détecter de nouvelles créations de fichiers indépendamment de leur chemin.

Je veux faire cela afin que je puisse calculer une somme MD5 pour chaque fichier nouvellement écrit.

Merci pour tout conseil que vous pouvez offrir.


2 commentaires

Définir "quel que soit leur chemin"? Un système de fichiers? Toute monture écritable? Aussi, quel système d'exploitation? (La réponse courte est "non" mais il peut y avoir une mise en garde en fonction du système d'exploitation)


Juste Windows 7 / NTFS pour l'instant. Je voudrais surveiller tous les volumes montés. Je teste jnotify comme solution possible. Merci


3 Réponses :


0
votes

Une possibilité - pas pratique, mais une possibilité - est de marcher sur l'arborescence de répertoires pour les répertoires que vous souhaitez regarder, vous inscrivez-vous à une surveillance. Ce n'est pas une très bonne façon d'y aller, et cela pourrait être un problème en fonction de la taille de l'arborescence réel répertoire.


0 commentaires

0
votes

OK, une réponse courte est que je ne pense pas que Java puisse le faire hors de la boîte. Vous devez soit intercepter les appels au système d'exploitation qui nécessiterait quelque chose de plus proche du métal nu, ou vous pourriez faire comme suggéré dans une autre Répondez à et inscrivez-vous auditeurs à chaque dossier de la racine vers le bas, de ne pas mentionner d'autres lecteurs dans le cas des machines Windows.

La première approche aurait besoin de JNI personnalisée qui suppose que le système d'exploitation a un tel crochet et permet d'accéder au code utilisateur.

La deuxième approche fonctionnerait mais pourrait consommer une grande quantité de mémoire pour suivre tous les auditeurs. Dans Windows, cliquez avec le bouton droit de la souris sur C: \ \ et sélectionnez et voyez le nombre de dossiers dont nous parlons.


1 commentaires

Merci. J'ai trouvé le Jnotify Bibliothèque fonctionne parfaitement pour cela.



0
votes

Je ne sais pas StandardWatchevents (bien que cela sonne pratique).

Un moyen de faire un choix que vous souhaitez utiliser une API de fenêtre natale telle que ReadDirectoryChangesw (ou changements de volume). C'est douloureux, mais travaille (y a été là, je souhaite que j'avais une autre option à l'époque).


0 commentaires