Deletar um arquivo

19 respostas
A

Como posso saber o motivo de isto:

( new File( pathOfDocument ) ).delete();

estar retornando falso? Não existe alguma exception que diga: este arquivo não pode ser deletado por “tal motivo”…

19 Respostas

S

O false deve ser pq o arquivo não existe.
Verifica se o caminho e nome do arquivo estão correto, e se ele realmente existe.

A

Minha função completa:

public static void deleteDocumentInLocalArchive( String pathOfDocument ) throws FileNotFoundException { if( ( new File( pathOfDocument ) ).exists() ){ ( new File( pathOfDocument ) ).delete(); }else{ throw new FileNotFoundException(); } }
Ou seja, o arquivo existe, mas ele não deleta…

T

Se o arquivo estiver aberto por algum motivo, ele não poderá ser deletado.

Infelizmente “delete” não lança uma IOException indicando qual o problema ocorrido para não poder deletar, e pior, pode até ser que ele não retorne “false” se não conseguir deletar.

S

Vc tá usando sistema operacional unix ou linux?

Pode ser algo relacionado a permissão de arquivo.

Não lembro se tem como fazer essa verificação, peraí que vou ver se acho algo…

H

se o path que vc está indicando para ser deletado for um diretório… ele deve estar vazio… senão ele não deleta!!

Henrique

A

thingol:
Se o arquivo estiver aberto por algum motivo, ele não poderá ser deletado.

Infelizmente “delete” não lança uma IOException indicando qual o problema ocorrido para não poder deletar, e pior, pode até ser que ele não retorne “false” se não conseguir deletar.


Tem algum teste pra eu saber se o arquivo está aberto?

V

o arquivo não está como read only

H

vc está esquecendo de capturar uma exception que pode ser lançada ao tentar excluir… que é a SecurityException…

S

Cara, a classe File tem os métodos canRead() e canWrite(), boolean.

Um caminho talvez seja verificar se eles são verdadeiros (se não está read only).

A

sapulha:
Cara, a classe File tem os métodos canRead() e canWrite(), boolean.

Um caminho talvez seja verificar se eles são verdadeiros (se não está read only).


Os dois retornam true

S

Cara, também dá pra usar o SecurityManager.checkDelete(java.lang.String fileName)

Ele lança SecurityException se não puder deletar o arquivo.

A

try{ ( new File( pathOfDocument ) ).delete(); }catch( SecurityException e ){ e.printStackTrace(); }
Não lançou…

V

o path do arquivo esta ok ?

S

Cara, também dá pra usar o SecurityManager.checkDelete(java.lang.String fileName)

Ele lança SecurityException se não puder deletar o arquivo.

A

Acho que sim, pois eu testo pra ver se o arquivo existe antes de deletar:

public static void deleteDocumentInLocalArchive( String pathOfDocument ) throws FileNotFoundException { if( ( new File( pathOfDocument ) ).exists() ){ ( new File( pathOfDocument ) ).delete(); }else{ throw new FileNotFoundException(); } }

S

Cara, fiz assim e rolou aqui, ele lança uma SecurityException

public static void deleteDocumentInLocalArchive( String pathOfDocument ) throws FileNotFoundException {

if( ( new File( pathOfDocument ) ).exists() ){

SecurityManager.checkDelete(pathOfDocument);

( new File( pathOfDocument ) ).delete();			

}else{

throw new FileNotFoundException();

}

}
A

Pessoal, tinha alguém usando este arquivo… foi mal…

R

ja tentou assim:

try{

File file = new File( pathOfDocument );

if ( !file.delete() )

System.out.println( Arquivo existe, porém, não foi possível deletar! );

}catch( SecurityException e ){

e.printStackTrace();

}
A

Ele estava aberto por outro programa… agora tá deletando… valews

Criado 4 de agosto de 2006
Ultima resposta 4 de ago. de 2006
Respostas 19
Participantes 6