Classe File et deleteOnExit

Classe File et deleteOnExit - Java - Programmation

Marsh Posté le 06-10-2003 à 13:57:43    

Je bosse sous win2k et winxp et je pensé utiliser cette méthode pour me débarasser de mes fichiers temporaires après la fin de l'application. Or les dits fichiers ne sont pas effacés malgrès l'appel de deleteOnExit. Y a une raison particulière, c un bug connu, ca marche sous d'autres systèmes?
 
Pour info j'utilise ça dans deux contextes différents, dans le premier cas je crée un ficheir temporaire pour une opération d'entrée sortie, je le ferme et je m'en occupe plus jusqu'à la fin de l'appli, vu que deleteOnExit marche pas j'ai solutionné le pb avec un simple delete. Dans le 2eme cas c pour effacer une dll temporaire contenant du code natif, donc là je peux pas la virer tant que la jvm tourne vu que je peux potentiellement en avoir besoin.
 
Une idée?
 
Un chtit bout de code ou j'essaye d'utiliser deleteOnExit:
 

Code :
  1. String libraryName = System.mapLibraryName(NativeLibraryBaseName);
  2.         //Récupération du nom de la bibliothéque.
  3.         URL libraryURL = ClassLoader.getSystemResource(libraryName);
  4.         //Récupération du chemin de la bibliothéque.
  5.         try
  6.         {
  7.            
  8.    //Extraction de la bibliothèque.
  9.                 File tempLibrary = File.createTempFile(libraryName, "" );
  10.                 OutputStream output = new FileOutputStream(tempLibrary);
  11.                 InputStream input = libraryURL.openStream();
  12.                 byte[] buffer = new byte[1024];
  13.                 int length = input.read(buffer);
  14.                 while (length >= 0)
  15.                 {
  16.                     output.write(buffer, 0, length);
  17.                     length = input.read(buffer);
  18.                 }
  19.                 input.close();
  20.                 output.close();
  21.                 tempLibrary.deleteOnExit();
  22.    //Chargement de la bibliothèque.
  23.                 System.load(tempLibrary.getPath());
  24.            
  25.         }
  26.         catch (IOException e)
  27.         {
  28.             e.printStackTrace();
  29.             throw new UnsatisfiedLinkError(e.getLocalizedMessage());
  30.         }
  31.         catch (UnsatisfiedLinkError e)
  32.         {
  33.             System.err.println("Impossible de charger la bibliothéque dynamique: " + libraryName);
  34.             throw new Error(e);
  35.         }


 


Message édité par LetoII le 06-10-2003 à 14:04:07

---------------
Le Tyran
Reply

Marsh Posté le 06-10-2003 à 13:57:43   

Reply

Marsh Posté le 06-10-2003 à 14:42:26    

ptet justement parce que la jvm l'utilise qu'il ne la delete pas? [:meganne]
 
tu peux pas unloader la librairie de la meme façon que tu la loades?

Reply

Marsh Posté le 06-10-2003 à 16:04:01    

the real moins moins a écrit :

ptet justement parce que la jvm l'utilise qu'il ne la delete pas? [:meganne]
 
tu peux pas unloader la librairie de la meme façon que tu la loades?
 


 
En théorie, quand la jvm s'arréte elle utilise plus la bibliothéque, donc elle peut la supprimmer, en même temps il est possible que windows veule pas vu qu'il va la garder un moemnt en mémoire, j'avais pas pensé à ça  [:ddr555]  
 
Enfin ça explqiue pas pkoi ça marche pas dans la cadre plus con du fichier temporaire dans lequel j'écrit, que je ferme et que j'utilise plus.


---------------
Le Tyran
Reply

Marsh Posté le 06-10-2003 à 16:39:56    

ben euh si peut etre que justement...
vu que ton fichier temporaire windows s'en contrefout...

Reply

Marsh Posté le 06-10-2003 à 16:42:05    

the real moins moins a écrit :

ben euh si peut etre que justement...
vu que ton fichier temporaire windows s'en contrefout...
 


 
... pkoi n'est il pas effacé par la JVM après un appel à deleteOnExit?


---------------
Le Tyran
Reply

Marsh Posté le 06-10-2003 à 16:42:23    

sinon essaie de debugger pour voir ce qu'il se passe?[:spamafote]

Reply

Marsh Posté le 06-10-2003 à 16:42:48    

ha euh je croyais que ton 1er fichier etait effacé :D

Reply

Marsh Posté le 06-10-2003 à 16:43:52    

the real moins moins a écrit :

ha euh je croyais que ton 1er fichier etait effacé :D


 
Nan, jamais réeussi à la faire fonctionner cette méthode  [:spamafote]


---------------
Le Tyran
Reply

Marsh Posté le 06-10-2003 à 16:53:01    

[:drapal]


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

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