Deletar um arquivo

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”…

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.

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…

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.

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…

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

[quote=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.[/quote]
Tem algum teste pra eu saber se o arquivo está aberto?

o arquivo não está como read only

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

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).

[quote=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). [/quote]
Os dois retornam true

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

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

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

o path do arquivo esta ok ?

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

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

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(); } }

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();
}
}

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

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();
}

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