HAI LETTO L'ARTICOLO DI OGGI??? CLICCA QUI

Cultura informatica: Java riuscire a cancellare un file dal FileSystem

Negli ultimi giorni sono stato impegnato per risolvere un’anomalia Java: Un file generato da un parsing XML non veniva cancellato da file System (WINDOWS). Il metodo file.delete() non funzionava. Forniva come risultato false

Nello specifico il codice era di questo tipo:

import java.io.File;
import java.io.IOException;
import java.io.StringReader;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class Test {

public static void main(String[] args) throws TransformerException, IOException {
File test = new File(“test.txt”);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer xformer = tf.newTransformer();
StringReader st = new StringReader(“< ?xml version=\"1.0\" encoding=\"UTF-8\"?>“);
StreamSource s = new StreamSource(st);
StreamResult r = new StreamResult(test);
xformer.transform(s,r);
System.out.println(“Delete:”+test.delete());
}
}

In sintesi se usi uno StreamResult(File) il file non viene chiuso dal transform() method.
Risultato: il file non puo’ essere cancellato o rinominato finche’ non si riavvia la JVM

Dopo tanto penare il bug e’ risultato essere di JAVA
Il bug e’ questo: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6216226

Questa cosa e’ stata risolta nella versione di jaxp 1.4 di java.net
il link e’ questo: https://jaxp.dev.java.net/servlets/ProjectDocumentList

Per avere i jar bisogna installare il jar della versione di jaxp 1.4 da qualche parte sulla vostra macchina

Avviare l’installazione con : java -jar JAXP_143.jar
che scompatta tutto sotto la cartella ./jaxp-1_4_3.

L’installazione vi fornira’  i sorgenti, la javadoc e gli agognati jar da installare.
Su Java 5 e’ sufficiente copiare i due file: jaxp-api.jar e jaxp-ri.jar sotto:
[jdk1.5]/jre/lib/endorsed

Ho provato a invocarli nell’avvio dell’applicazione Java, ma non ne ha voluto sapere!!! Nella maniera sopradescritta funziona e così ve la dico!!!

Copiate quindi i due jar nella cartella “endorsed” ( se non esiste createla!!!)
Riavviate il processo java e come per magia riuscirete a cancellare il file

(Visited 45 times, 1 visits today)
4

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *