PDA

Visualizza la versione completa : Cancellazione di un file in java


abcd1000
26-03-2003, 13:56
Ho un file che voglio cancellare

static File f = null;
static PrintWriter pw = null;

FileReader fin = null;

String absPath ="c:\\prova.txt";

try {
fin = new FileReader(absPath);
} catch(FileNotFoundException e){} }

try {
pw = new PrintWriter
(new BufferedWriter
(new FileWriter
( f.getAbsolutePath(), true )));
} catch (IOException IOE) {}

try {
fin.close();
} catch (IOException e5){}

pw.flush();
pw.close();
f.exists();
f.delete();

La exist ritorna il valore true, quindi il file lo trova
La delete torna il valore di false cioè non lo cancella
Il file non viene cancellato, e' come se rimanesse qualcosa di aperto che punta al file ma io ho chiuso sia il reader sia il writer

qualcuno sa darmi una mano?

(le variabili f e pw devono essere globali e static nel mio programma)

abcd1000
26-03-2003, 13:58
f w pw devono essere static perchè anche se le ho dichiarate globali, passando da un metodo ad un altro NELLA STESSA CLASSE, mi diventano null...
Se le dichiaro static questo non succede

l.golinelli
26-03-2003, 14:00
Ma f punta a null :confused:

abcd1000
26-03-2003, 14:01
forse ho capito il problema ho istanziato due oggetti della stessa classe
ignorate questo post, vado a pranzo e poi indago

floyd
26-03-2003, 14:02
prova così
FileWriter FW = new FileWriter(f.getAbsolutePath(), true);
BufferedWriter BW = new BufferedWriter(FW);
pw = new PrintWriter(BW);
e per chiudere
FW.close();
BW.close();
pw.close();
poi toglierei il BufferedWriter

abcd1000
26-03-2003, 14:15
scusa hai ragione ho dimenticato di incolalre un pezzo

f = new File ("c:\\prova.txt");

l.golinelli
26-03-2003, 14:17
Ah OK... ;)

abcd1000
26-03-2003, 14:17
ok intanto pw e f non sono più static l'errore derivava che istanziavo due oggetti per quello mi diventavano null mentre passeggiavo fra i metodi

ora prova la soluzione di floyd per cancellarlo

abcd1000
26-03-2003, 14:22
floyd ho chiuso tutto ma non lo cancella lo stesso

floyd
26-03-2003, 14:48
dovresti lasciare il tempo alla jvm di liberare tutte le risorse, prova a fare un Thread.sleep(2000);

Loading