Problemas para mover um arquivo

Pessoal, boa tarde!

Tenho uma aplicação que “pega” um monte de arquivos de uma pasta de entrada e faz uma serie de processamentos, alguns arquivos são aprovados e outros rejeitados, o que eu estou tentando fazer é mover os arquivos da pasta de entrada para a pasta correta apos o processamento mas o codigo a seguir não funciona…

    File entrada = new File(dirEntrada+nomeDoArquivo);
    
    File saida = new File(dirAprovados);
    
    boolean moveu = entrada.renameTo(new File(saida, nomeDoArquivo));
    if (!moveu) {
       System.out.println("Não foi possivel mover o arquivo original " + dirEntrada+nomeDoArquivo);
    }

é bug ou to fazendo algo errado???

No console não aparece mensagem de erro…

Valeu…

"Renames the file denoted by this abstract pathname.

Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful. "

http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html

Se inglês for um problema, basicamente pode realmente existir um “bug”, ou pode haver um arquivo com o mesmo nome onde você vai tentar copiar. Se for no linux testa também se você tem permissões para copiar na pasta que você quer.

Então deve ser bug mesmo…

Uso o windows e tenho todas as permissões nessa maquina…

Que que eu devo fazer agora???

Alguem tem uma dica???

Valeu…

você pode ler esse arquivo com bufferedreader e criar um outro arquivo com o mesmo nome, na pasta que você quer criar usando bufferedwriter… Deve ter solução melhor só que nao consigo pensar em nenhuma agora…

Que tal usar o Commons IO da Apache?

[code]File origem = new File(“C:/arquivo.txt”);
File destino = new File(“C:/novoarquivo.txt”);

FileUtils.copyFile(origem, destino);[/code]

http://jakarta.apache.org/commons/io/

http://jakarta.apache.org/commons/io/api-release/org/apache/commons/io/FileUtils.html

Se achar que não vale a pena, então pode criar 2 streams e copiar de um para o outro, ex.:

[code]InputStream in = new FileInputStream(“C:/arquivo.txt”);

OutputStream out = new FileOutputStream(“c:/novoarquivo.txt”);

int b;

while((b = in.read())>-1){
out.write(b);
}[/code]

A solução (provisoria) que acabei fazendo foi com stream mesmo, criei um novo arquivo e tentei fazer um .delete no antigo mas não deu certo, então fiz um batch pra rodar depois que minha aplicação para de rodar mas não quero deixar assim não, achei meio porco…

Jair amanhã vou dar uma olhada nessa maneira do Apache, vamos ver se vai funcionar…

Muito obrigado pela ajuda de voces e amanhã falo se deu certo ou não…

Valeu…

Pessoal consegui resolver…

O problema foi de distração mesmo, eu tinha colocado a chamada pra mover o arquivo antes de fechá-lo…
Foi besteirada mesmo…

Mas valeu a todos pela ajuda…