[java] suppression de fichiers/réps

suppression de fichiers/réps [java] - Java - Programmation

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 ?

Reply

Marsh Posté le 12-01-2004 à 22:14:34   

Reply

Marsh Posté le 12-01-2004 à 22:36:40    

bizarre que delete marche pas  :heink:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-01-2004 à 22:54:11    

Bizarre autant qu'étrange... :D
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 ?

Reply

Marsh Posté le 12-01-2004 à 23:07:06    

Lecture seule ?


---------------
Le site de ma maman
Reply

Marsh Posté le 12-01-2004 à 23:08:53    

Perso, j'utilise quotidiennement File.delete() dans une servlet et ça marche très bien [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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... :D
 
 
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...

Reply

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 [:spamafote] Par contre, fais un close() sur les éventuels Streams qui pourraient taper dessus, hein :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 [:spamafote] 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 :D )... Bon, je vérifierai qd même ça demain au blot, mais j'ai qques dtes ; ça serait presque trop simple :/

Reply

Marsh Posté le 12-01-2004 à 23:32:23    

Bin j'avais eu le souci aussi mais fermer les Streams avait suffit [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 12-01-2004 à 23:39:22    

Ok ben prions donc :o

Reply

Marsh Posté le 12-01-2004 à 23:39:22   

Reply

Marsh Posté le 13-01-2004 à 00:11:17    

ben si tu fermes pas tes streams, y'a pas a s'etonner, en effet [:mlc]
 
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 :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

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 :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 00:51:33    

scOulOu a écrit :


Tu l'as svt essayé, de ton côté ?


ben oui
 

scOulOu a écrit :


Jamais eu de pb ?


ben non


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 01:01:51    

benou a écrit :


+1
 
doit y avoir une raison mais je vois vraiment pas laquelle :/

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? :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

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 ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 12:35:32    

ouè.
tu fais une jsr?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh 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à :/

Reply

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.


Message édité par Predicator le 13-01-2004 à 15:15:27
Reply

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.


Message édité par scOulOu le 14-01-2004 à 14:31:03
Reply

Marsh Posté le 14-01-2004 à 15:05:45    

scOulOu a écrit :


Pour ma part, un garbage collector avt la suppression semble bien marcher.

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)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-01-2004 à 15:37:03    

the real moins moins 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)


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 [:spamafote]


Message édité par scOulOu le 14-01-2004 à 15:37:19
Reply

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 :o
une exception ca aurait été bien quoi :/

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed