suppression de fichiers/réps [java] - Java - Programmation
Marsh Posté le 12-01-2004 à 22:36:40
ReplyMarsh Posté le 12-01-2004 à 22:54:11
Bizarre autant qu'étrange...
C'est pas qu'il marche pas, c'est plutôt qu'il marche très mal
Tu l'as svt essayé, de ton côté ? Jamais eu de pb ?
Marsh Posté le 12-01-2004 à 23:08:53
Perso, j'utilise quotidiennement File.delete() dans une servlet et ça marche très bien
Marsh Posté le 12-01-2004 à 23:17:42
cherrytree a écrit : Lecture seule ? |
Bah non. La meilleure preuve en est que ça marche svt après plusieurs itérations. Alors, à moins que Win s'amuse à protéger aléatoirt ses fichiers en lecture...
Taiche > quelle sorte de fichiers ? Tu les utilises via java, avt de les supprimer ? Parce que j'en viens à me demander s'il y aurait pas un tps de latence indéfini après usage du fichier en tant qu'objet, qui ferait qu'il serait pas dispo pr la suppression...
Marsh Posté le 12-01-2004 à 23:20:14
C'est un fichier que je crée, que je lis pis que je détruis Par contre, fais un close() sur les éventuels Streams qui pourraient taper dessus, hein
Marsh Posté le 12-01-2004 à 23:30:19
Taiche a écrit : C'est un fichier que je crée, que je lis pis que je détruis Par contre, fais un close() sur les éventuels Streams qui pourraient taper dessus, hein |
Un peu comme moi, c'est bizarre... Et normalt je close() ttes les streams qui s'en servent (spas trop cpliqué, y'en a deux )... Bon, je vérifierai qd même ça demain au blot, mais j'ai qques dtes ; ça serait presque trop simple
Marsh Posté le 12-01-2004 à 23:32:23
Bin j'avais eu le souci aussi mais fermer les Streams avait suffit
Marsh Posté le 13-01-2004 à 00:11:17
ben si tu fermes pas tes streams, y'a pas a s'etonner, en effet
sinon, file.delete() te renvoie un booleen, déjà, qui te dit si le fichier est deleté ou non, donc t'as un minimum de controle. j'ai par contre tjs trouvé débile que ça ne lance pas une exception ça
Marsh Posté le 13-01-2004 à 00:50:48
the real moins moins a écrit : j'ai par contre tjs trouvé débile que ça ne lance pas une exception ça |
+1
doit y avoir une raison mais je vois vraiment pas laquelle
Marsh Posté le 13-01-2004 à 00:51:33
scOulOu a écrit : |
ben oui
scOulOu a écrit : |
ben non
Marsh Posté le 13-01-2004 à 01:01:51
benou a écrit : |
vu que c'est un appel natif, ça doit etre qu'un des os ciblés au départ par sun ne donnait pas plus d'indications?
Marsh Posté le 13-01-2004 à 08:20:15
the real moins moins a écrit : vu que c'est un appel natif, ça doit etre qu'un des os ciblés au départ par sun ne donnait pas plus d'indications? |
ben ouais mais même, ils avaient juste à balancer une exception sans message d'erreur ...
Marsh Posté le 13-01-2004 à 12:35:32
ReplyMarsh Posté le 13-01-2004 à 14:52:45
Bon alors, y'a bien ttes les streams qui closées.
En revche, encore un truc bizarre : qd je génère le fichier puis que j'essaie de l'effacer, ça plante au bout de 5-6 tentatives (la limite que j'ai fixée). Mais si je relance la même opération sans effacer le fichier préalablt généré (qui sera dc écrasé par sa regénération), le File.delete() marche.
Je nage un peu, là
Marsh Posté le 13-01-2004 à 15:15:09
et si au lieu de tenter plusieurs fois de le détruire, tu attendais un peu ?
genre un wait(100)... je pense que la requête de suppression doit être lancé au système, et que le système le fait quand il en a le temps, donc ça peut avoir des effets de bord...
je m'en sers aussi du File.delete(), et j'ai jamais eu de problème...
le coup des streams pas fermés me semble une bonne piste.
Marsh Posté le 14-01-2004 à 14:30:30
Alors :
- je confirme que ts les streams st bien fermés
- la temporisation ne donne pas tjrs qqch
En fait, d'après un collègue qui a fait une recherche sur le net, il semblerait que ça soit un pb assez répandu (la classe File est dc bien un peu merdique), que les dvpeurs résolvent via une association de temporisation et de garbage collector.
Pour ma part, un garbage collector avt la suppression semble bien marcher.
Marsh Posté le 14-01-2004 à 15:05:45
scOulOu a écrit : |
c'est quoi le rapport?
(et que bcp de gens aient un problème avec File ne signifie pas nécessairement que File est merdique)
Marsh Posté le 14-01-2004 à 15:37:03
the real moins moins a écrit : c'est quoi le rapport? |
Ben ce problème-là, à savoir un File.delete() qui marche aléatoirt sans aucun moyen de connaître l'origine de la chose, si, qd même un peu, non ?
Sinon pr le rapport, ben y'a guère que des supputations. Le gc tuerait des instances inutilisées qui auraient néamoins encore un handle sur le fichier, par ex. Je suis pas assez expert en Java pr fouiller la chose plus loin que ça, mais le fait est que ça marche
Marsh Posté le 10-04-2004 à 19:53:00
chez moi aussi ca merdouille.
le pire c'est que c'est aleatoire. la seul difference d'avec scoulou c'est que je fait pas de boucle pour viré le fichier j'essaye une fois et puis basta :s
sinon le deleteOnExit ne passe pas non plus .
bref, il ont merdé sur ce coup
une exception ca aurait été bien quoi
Marsh Posté le 12-01-2004 à 22:14:34
Quelqu'un aurait une méthode relativt sûr pr supprimer des fichiers, par hasard ?
Parce qu'en passant par les méthodes de cette foutue classe File, à priori, faites pour, j'obtiens des résultats complètement aléatoires. En testant sur le même fichier, on s'aperçoit qu'un coup il est effacé, un coup non, et ce sans le moindre message d'erreur.
J'ai bien essayé de ruser en bouclant sur la méthode delete() jusqu'à ce que le fichier soit détruit, mais qd ça met plus de 100 itérations, c'est lourd.
Alors, il existerait pas un truc génial qui m'éviterait de poursuivre mes bidouilles stériles ?