2013-03-11 18 views
14

Quando si tenta di eliminare un file presente nel server tomcat conf/Catalina/localhost dal codice java, quindi file.delete() restituisce sempre falso . Ma se sto controllando il file con la funzione file.exists() restituisce true. Non ho alcuna eccezione. Per favore aiutaci perché questo sta accadendo. Qual è la soluzione per questo?java file.delete() restituisce false ma file.exists() restituisce true

+6

se file.delete() restituisce false, quindi significa che non è stato eliminato. Quindi file.exists() restituirà true. Non c'è niente di sbagliato – rajesh

+3

Controlla i permessi del file. – m0skit0

+0

Il file esiste, ma non può essere cancellato. È tutto. – Ingo

risposta

14

Quando sto cercando di eliminare un file che è presente nel server Tomcat conf/Catalina/localhost dal codice Java allora File.Delete() sempre restituisce false. Ma se sto controllando il file con la funzione file.exists() restituisce true.

Molto probabilmente non avete il permesso per l'eliminazione di file (s) sul server. Controlla le tue autorizzazioni.

f.delete() restituisce false indica che non è/non può essere eliminato e f.exists() restituisce true, quindi il file esiste ma non può essere eliminato.

+1

Ho il pieno permesso del server. Se sto cercando di cancellare lo stesso file, qualche volta il file viene cancellato ma il tempo massimo non è in grado di eliminarlo e la funzione restituisce false. – vishal

+0

@vishal non lo fai quando non funziona. – Sajmon

+0

C'è qualche altro metodo o libreria che aiuterà a risolvere questo problema. Perché ho il requisito di eliminare il file utilizzando il codice. – vishal

0

significa che il file è esistente, ma il processo di Java non hanno il permesso di cancellare that.That è il motivo per funzione di eliminazione sta tornando falsa

Returns: true if and only if the file or directory is successfully deleted; false otherwise

+2

Quindi indicatemi come assegnare il permesso al processo java per eliminare il file. Perché devo cancellare il file per codice comunque. – vishal

9

Ci sono un certo numero di motivi per cui un file non può essere cancellato; potrebbe non esistere, potrebbe essere una directory non vuota, potresti non aver chiuso tutte le risorse che lo utilizzano, e il tuo programma potrebbe non avere il permesso di farlo, per citarne alcuni.

Sfortunatamente il metodo File.delete() fornisce pochissime informazioni sul perché; sta a te decidere di districarti e capirlo. Ma ci sono buone notizie; non si desidera utilizzare File in primo luogo.

Java 7 ha introdotto il nuovo pacchetto java.nio.file che è un'API di accesso ai file molto più robusta. Fornisce il concetto di un astratto Path e separa le operazioni concrete nella classe Files, in particolare fornisce Files.delete() che è documentato per generare chiare eccezioni che descrivono i motivi per cui l'eliminazione potrebbe non riuscire.

Utilizzare Path e Files; sarai contento di averlo fatto.

2

È necessario chiudere lo stream prima di eliminarlo.

per esempio -

fileInputStream.close(); 
file.delete(); 
2

Se la directory non è vuota, allora File.delete() metodo restituirà falso senza gettare un errore.

È necessario pulire la directory prima di eliminarla.

Problemi correlati