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