oi pessoal… bom…vo direto ao ponto…nao vo cola codigo pq nao to no pc do serviço, mais em resumo, o metodo delete() de File não ta apagando o arquivo de jeito nenhum…
–> sei que esse arquivo existe pq recebo ele de um listFiles(<tinha um FileFilter aqui>)
–> sei que tenho permissão para tal pois testei com arquivos que eu consigo copiar e excluir pelo windows/dos
ao invez usar meuFile.delete(), eu tentei usar Runtime.getRuntime().exec(("del/q "meuFile.toString()))
percebi que o delete() de file retorna um boolean confirmando se excluiu…eu fiz isso:
boolean b = false;
do{
b = meuFile.delete();
}while(!b);
o problema é que assim a CPU vai a 100% e assim mesmo custa um certo tempo (alguns segundos, geralmente mais q 5, e preciso fazer isso com varios arquivos) pra apaga o raio do arquivo (perdi a tarde toda com isso hj)…
se alguem ai puder me ajudar, contar como resolveu isso no passado, eu to mto grato…
Provavelmente o teu arquivo ainda está mapeado pelo sistema, e a VM não liberou os recursos.
Tente dar um System.gc() antes de tentar um delete.
Quando o sistema entra em loop de while(true){…} sem nenhuma pausa a thread corrente consome todos os recursos do sistema, por isso a CPU vai para 100%. Adicione no código do seu while um Thread.sleep(10) e me diga se o problema continua. A melhor forma seria colocar um número de máximas tentativas junto com o sleep.
em relação ao Thread.sleep eu ja tinha colocado (mais eskeci de flaa ai no topico), apesar que coloquei sleep(1)…talves seja poco, o caso é que eu não quero sair sem apagar esses arquivos por isso nao quero colocar um numero maximo de loops…
o problema é que mesmo assim, as vezes ta saindo do loop sem ter apagado os arquivos (o delete() ta retornando true sem apagar???)
eu vo tenta chama o garbage antes…(nem nunca imaginei que isso podia adianta alguma coisa, mais tem mto sentido mesmo…)
eu ja retorno akipra posta osresultados…vlw galera kem ajudo…
Cara, que arquivos vc está tentando deletar? Parece-me que alguma outra aplicação está recriando este arquivo, já que vc disse que tem permissão FULL, não é? Ou então, vc não está achando o arquivo.
Tente o seguinte: Faça um
if ( file.exists() )
System.out.println("Arquivo localizado!");
try{
System.out.printf("Path:%s\r\n", file.getCanonicalPath() );
}catch(...)
Com isso vc pode matar a possibilidade de não está realmente achando o arquivo.
ae galera…aki funciono legal…
vlw mesmo hein… tirei o loop inclusive e funciono normal…obrigadão a todo mundo que veio aqui me ajuda, vlw mesmo…
não…nem era isso luca… era o sistem.gc que nosso amigo disse(foi só coloca ele e resolveu)… tem sentido o que vc falo mais nao era o que tava acontecendo (ainda bem pq senao eu ia ter que mecher em outros codigos tb… de qualquer jeito vlw ai a força, levanta as possibilidades e se interessa por ajudar…isso que faz o forum continua…