Ho questo problemino, devo prendere dei files remoti, manipolarli in locale creando un nuovo file e poi spedire in remoto il file creato.

Ho una funzione che mi legge i file da remoto e me li salva in locale, dopodichè chiamo una execute a cui passo i files locali e il nome del file finale ancora da creare

codice:
String destLocaleFilename = execute(sourceFiles, tempDestFileName);
String destRemoteFilename = put(destLocaleFilename,destPath);
per spiegarmi meglio
sourceFiles è un array di files -> sono i files che mi sono già salvata in locale
tempDestFileName è una stringa ed è il nome del file che deve essere creato
destLocaleFilename è il nome del file effettivamente creato, solo il nome.. se la execute va a buon fine ho sulla mia directory temp il file creato.
destRemoteFilename è il nome del file salvato in remoto, se coindice con quello aspettato vuol dire che la put è andata a buon fine cioè che ha preso il mio file finale in locale e lo ha sbattuto nella rete.

Il problema è che se va tutto a buon fine voglio cancellare i file locali. ho fatto:
codice:
for (int i = 0; i < sourceFiles.length; i++)
				sourceFiles[i].delete();
File destFile = new File(destLocaleFilename);
System.out.println(destFile.delete());
questo perchè qui ho solo il nome del file e non il file vero e proprio, siccome quando lo creo se esiste già non ne crea uno nuovo ho pensato che bastasse questo per cancellarlo dal filesystem.. ma mi sbagliavo! destFile.delete() mi ritorna false.

Allora ho pensato di cancellarlo dentro la put, tanto è l'ultima volta in cui quel file serve davvero ed ho effettivamente il file lì dentro e non solo la stringa.. ma anche di lì il destFile.delete() mi ritorna false..
idee? posso capire *perchè* la delete non funziona? grassie