Sono consapevole che questa domanda è un duplicato furioso della domanda this. Tuttavia,, ora ho letto l'intera pagina due volte, e alcune sezioni 3 volte, e per la vita di me non vedo come/dove viene risposto!Eliminazione file Java 6
Quindi, per il mio problema.
Sono al lavoro e sono bloccato utilizzando Java 6 SE e non posso aggiornare a 7. Sto scrivendo un programma che crea un file, scrive su di esso, esegue un po 'di elaborazione, e quindi ha bisogno di eliminare il file fuori esistenza. Sto avendo lo stesso identico problema della persona che ha posto la domanda di cui sopra: Java non cancellerà il file e non riesco a capire perché.
Il codice:
File f = null;
FileWriter fw = null;
try
{
f = new File("myFile.txt");
fw = new FileWriter(f);
fw.write("This is a sentence that should appear in the file.");
fw.flush();
if(f.delete())
System.out.println("File was successfully deleted.");
else
System.err.println("File was not deleted.");
}
catch(Exception exc)
{
System.err.println(exc.getMessage());
}
catch(Error er {
System.err.println(er.getMessage());
}
catch(Throwable t)
{
System.err.println(t.getMessage());
}
finally
{
fw.close();
}
Non è gettando eventuali throwables, errori o eccezioni (ho incluso quelli per escludere eventuali casi e tutti i bordi). La seconda stampa ("File was not deleted."
) viene stampata sulla console. Sto eseguendo questo su Windows 7 e sto scrivendo in una cartella in cui ho le autorizzazioni complete (rwx).
L'utente che ha fatto la domanda a cui ho fatto riferimento ha risposto alla sua domanda, ma lo fa (a mio modesto parere) in un modo non così semplice. In ogni caso, sto avendo problemi a dare un senso a ciò. Sembra alludere al fatto che l'utilizzo di uno BufferedReader
rispetto a uno FileInputStream
ha fatto la differenza per lui/lei, ma io non vedo come ciò si applica.
Java 7 sembra aver risolto questo problema con l'introduzione di una classe java.nio.file.Files
, ma ancora una volta, non posso utilizzare Java 7 per motivi al di fuori del mio controllo.
Altri risponditori a tale domanda di riferimento alludono che si tratta di un "bug" in Java e forniscono tutti i tipi di aggiramenti, ad esempio chiamando esplicitamente System.gc()
, ecc. Ho provato tutti questi e non funzionano.
Forse qualcuno può aggiungere una nuova prospettiva e fare jogging pensando a me.
Non penso che sia un duplicato. Poiché hai provato le soluzioni suggerite dall'altra domanda e non hanno aiutato, è probabile che la causa sia diversa. – finnw
Chiudilo per primo. E ... "bloccato usando Java 6?" Non conosco una singola azienda in esecuzione su JDK7. Conosco molti che sono su 1.4 e 1.5. Considerati fortunato. –
si prega di notare quello che hai detto è opposto: utilizzando FileInputStream invece di BufferedReader è ciò che ha funzionato per l'utente nell'altro post. Per quanto riguarda il motivo per cui si applica, alcuni commenti suggeriscono un bug in Java. –