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 :
- String libraryName = System.mapLibraryName(NativeLibraryBaseName);
- //Récupération du nom de la bibliothéque.
- URL libraryURL = ClassLoader.getSystemResource(libraryName);
- //Récupération du chemin de la bibliothéque.
- try
- {
-
- //Extraction de la bibliothèque.
- File tempLibrary = File.createTempFile(libraryName, "" );
- OutputStream output = new FileOutputStream(tempLibrary);
- InputStream input = libraryURL.openStream();
- byte[] buffer = new byte[1024];
- int length = input.read(buffer);
- while (length >= 0)
- {
- output.write(buffer, 0, length);
- length = input.read(buffer);
- }
- input.close();
- output.close();
- tempLibrary.deleteOnExit();
- //Chargement de la bibliothèque.
- System.load(tempLibrary.getPath());
-
- }
- catch (IOException e)
- {
- e.printStackTrace();
- throw new UnsatisfiedLinkError(e.getLocalizedMessage());
- }
- catch (UnsatisfiedLinkError e)
- {
- System.err.println("Impossible de charger la bibliothéque dynamique: " + libraryName);
- throw new Error(e);
- }
|
Message édité par LetoII le 06-10-2003 à 14:04:07
---------------
Le Tyran