Bom dia
Estamos trabalhando no projeto e nesta fase , nossa aplicação vai tratar arquivos de 10mb até 3 Gb e
existe um momento após todo o tratamento onde é necessário mover o arquivo para outro diretório .
Estou tentado utilizar a rotina abaixo para mover os arquivos através de um .bat que é executado pelo método "Runtime.getRuntime()."
no entanto todo o tratamento do arquivo e inclusive a execução do BAT está em thread.
Problema: Não está funcionando direito ...as vezes executa e as vezes não executa, no entanto se eu executar o arquivo .bat
direto no diretório funciona perfeitamente, portanto , o bat não foi construído com erro de sintaxe.
Por que preciso do arquivo bat : porque o comando move é muito mais rápido que o copy e não sei como executar o move diretamente no Java.
Alguém sabe ou tem outra idéia ?
A minha suspeita é que a execução é mais rápida do que a construção do arquivo bat...Acho que o programa chega até a rotina de execução do bat antes de ter finalizado de escrever e fechar o arquivo.
[color=blue] public void MoverArquivo(String nmOrigem , String nmDestino)throws Exception{
String nmOrigemA,nmDestinoA;
File nmBatMove ;
BufferedWriter bwLinha;
nmOrigemA = nmOrigem.replace("\\\\", "\\");
nmDestinoA = nmDestino.replace("\\\\","\\");
nmBatMove = new File(nmOrigem.replace(" ","_")+".bat");
bwLinha = new BufferedWriter(new FileWriter(nmOrigem.replace(" ","_")+".bat"));
bwLinha.newLine();
bwLinha.write("move /Y "+"\""+ nmOrigemA + "\" " +"\""+ nmDestinoA +"\"" );
bwLinha.flush();
bwLinha.close();
Runtime.getRuntime().exec(nmOrigem.replace(" ","_")+".bat");
}[/color]