J'ai écrit un programme qui surveille un répertoire et lorsque des fichiers y sont créés, il en change le nom et les déplace dans un nouveau répertoire. Dans ma première implémentation, j'ai utilisé l'API Watch Service de Java, ce qui a bien fonctionné lorsque je testais des fichiers de 1 kb. Le problème qui s'est présenté est qu'en réalité, les fichiers créés sont de 50 à 300 Mo. Dans ce cas, l'API de surveillance trouvait immédiatement le fichier mais ne pouvait pas le déplacer car il était toujours en cours d'écriture. J'ai essayé de placer l'observateur dans une boucle (qui générait des exceptions jusqu'à ce que le fichier puisse être déplacé) mais cela semblait plutôt inefficace.
Comme cela n'a pas fonctionné, j'ai essayé d'utiliser un timer qui vérifie le dossier toutes les 10s et déplace les fichiers quand il le peut. C'est la méthode que j'ai fini par adopter.
Question : Existe-t-il un moyen de signaler la fin de l'écriture d'un fichier sans vérifier les exceptions ou comparer continuellement la taille ? J'aime l'idée d'utiliser l'API Watcher une seule fois pour chaque fichier au lieu de vérifier continuellement avec un timer (et de rencontrer des exceptions).
Toutes les réponses sont très appréciées !
nt