Problemas com arquivo em java! Urgente!

Olá pessoal, estou precisando urgentemente terminar um sistema que eu construi, o problema é q ele foi feito todo no linux, mas tem q rodar no windows… não estou conseguindo renomear um arquivo já existente, consigo ler todo o conteúdo do arquivo, porém quando vou escrever nele (crio um arquivo auxiliar copio todo o conteudo pra ele, acrescento o que for necessário e depois renomeio) na hora de renomear o arquivo não renomeia, alguém pode ajudar???

[code]public void salvaCadastroSenha(String senha){
String raiz = defineDiretorio("/Tabelas/Senhas.bin");
try {
File arq = new File(raiz+“Tabelas\auxSenhas.bin”);
FileOutputStream fosSenhas = new FileOutputStream(arq);
ObjectOutputStream oosSenhas = new ObjectOutputStream(fosSenhas);
Senhas cadSenhas = new Senhas();

    //abre o arquivo de Crianca              
    ObjectInputStream isSenha = new ObjectInputStream(new FileInputStream(raiz+"Tabelas\\Senhas.bin"));
    ArrayList<Senhas> restoreSenha = new ArrayList<Senhas>();
    try{
        while (restoreSenha.add((Senhas)isSenha.readObject()));
    }catch(Exception ex){isSenha.close();}
    isSenha.close();         
    cadSenhas.setSenha(senha);
    restoreSenha.add(cadSenhas);
    
    for (int i = 0; i < restoreSenha.size() ; i++){
         oosSenhas.writeObject(restoreSenha.get(i));
    }
    arq.renameTo(new File(raiz+"Tabelas\\Senhas.bin"));
    JOptionPane.showMessageDialog(null, "Senha Cadastrado com Sucesso!");
    oosSenhas.close();
 }catch(Exception ex){System.out.println("Fudeu!");}  
}[/code]

tudo funciona bem, porem na hora de renomear o arquivo naum renomeia (na pasta fica apenas o auxSenhas.bin)…
Obrigado!

Considerando que defineDiretorio retorne o valor certo p/ o caminho da raiz, tente

arq.renameTo(new File(raiz+"Tabelas"+ File.separator + nomeDoArquivoRenomeado));

Seguinte cara, eu acho que o seu próprio sistema está mantendo o arquivo aberto e por isso não renomeia.

De um close no arquivo assim que vc terminar de usá-lo depois renomeie ele ok.

[quote=jgandolfi]Seguinte cara, eu acho que o seu próprio sistema está mantendo o arquivo aberto e por isso não renomeia.

De um close no arquivo assim que vc terminar de usá-lo depois renomeie ele ok.[/quote]
Isso me lembra de um caso que via aqui no forum.

Feche o arquivo, dê um System.gc(), e renomeie o arquivo.

bem galera, acho q o arquivo num tah aberto não, pq ele é do tipo File, e eu não encontrei um método close pra ele… além disso ele é passado para um FileOutputStream, que é passado para um ObjectOutputStream que então é fechado (oos.close();)…

Obrigado galera, consegui resolver, o problema tava na hora de renomear o arquivo, no linux dava certo, mas no windows não, dai o jeito foi copiar o conteudo do arquivo para um array list, exluir o arquivo de origem, modificar o que for necessário no array list, criar outro arquivo (com o mesmo nome do que foi deletado) e salvar todo o array list denovo… obrigado msm gente!!