-
Etat de fichier
Bonjour,
J'ai un problème au niveau de la manipulation d'un fichier.
En faite,j'ai une classe JAVA qui crée un fichier crypté dans un emplacement sur le disque d'un client (vue que c'est une application client/serveur) puis j'attache ce fichier et je l'envoi par mail via un serveur exchange en faisant appel à une méthode "envoyer()".Ensuite je doit supprimer ce fichier du disque locale (machine client).
Le problème démarre quant je demande la suppression de fichier (aprés son envoi ) parceque l'instruction file.delete() ne peut pas s'exécuter vue que le ficher est en train d'utiliser par le processus d'attachement de fichier (lors de son envoi par mail).
J'ai penser à mettre l'instruction
Code:
Thread.sleep("xxx")
mais la valeur de xxx dépend du temps de réponse de serveur exchange utilisé lors de l'attachement de fichier, et en plus ça sera pas une solution générique.
Donc , ce que je demande une solution qui me permet de tester la desponibilité d'un fichier pour la suppression pour que je puisse l'intégrer et résoudre mon problème.
Merci d'avance.
-
Salut,
Tu peux déclencher une thread parallèle, qui se chargera, toutes les minutes par exemple, d'effacer le fichier.
Tant qu'elle n'y arrivera pas ( Exception levée ) tu attends une minute, et tu recommences.
L'avantage d'une thread, c'est que ton programme ne sera pas bloqué pendant ce temps là.
Pour plus de sécurité, tu peux ajouter le fichier à effacer en base de données ou dans un fichier, afin que même si l'utilisateur ferme l'application, le thread de suppression de fichier sera toujours opérationnel et tentera d'effacer le dit fichier.
Voila une solution... Un peu bancal ( car je ne connais pas de moyens d'obtenir une réponse lors de l'envoi d'un fichier à partir d'exchange, ce qui aurait été optimal ) mais qui te permet de résoudre ce problème..
Tu as aussi la méthode deleteOnExit ( File ) qui pourrait t'interesser.
A+
-
merci pour votre interet,
En faite je ne sait pas bien manipuler les thread, si vous pouvez me donner une idée comment je peut lancer un thread en parallel.
Merci