Senhores,
Estou precisando de uma ajuda para mover arquivos em ambiente Unix.
Eu tenho uma quantidade de arquivo em um caminho exemplo: /home/teste/arq, e preciso mover os arquivos desse caminho para o : /home/teste/arq/old.
A pergunta é a seguinte: Existe alguma coisa em java que faça isso?
obrigado,
Fabiano.
Você pode renomear o arquivo:
[code]File origem = new File("/home/teste/arq");
File destino = new File("/home/teste/arq/old");
origem.renameTo(destino);[/code]
mas não é totalmente garantido, então eu aconselho você a fazer assim:
[code]File origem = new File("/home/teste/arq");
File destino = new File("/home/teste/arq/old");
FileOutputStream out = new FileOuputStream(destino);
FileInputStream in = new FileInputStream(origem);
int b;
while((b = in.read())>-1){
out.write(b);
}
out.close();
in.close();
origem.delete();[/code]
Eu não testei o codigo, então pode ser que tenha algum erro, testa aí!
Vc precisa mover estes arquivos dentro do mesmo servidor ? Se sim, vc pode usar a dica do jairelton (ou um código um pouco mais limpo como o indicado em: http://javaalmanac.com/egs/java.io/MoveFile.html) mas vc deve ter cuidado, pois como se trata da classe File isso significa que ela irá carregar todos os arquivos na memória e como vc disse que são muitos (e não sei do tamanho físico deles) isso poderá gerar algumas dores de cabeça. A dica é fechar os File depois dele serem transferidos (renomeados).
Os Arquivos tem em media 5MB.
Essa rotina será executada diariamente, onde é feita a leitura desses arquivos, os dados inseridos em uma tabela, depois de lidos os arquivos, estou querendo mover para a pasta \old.
Eu não consigo utilizar o comando:
mv /home/teste/arq/*.txt /home/teste/arq/old
Vou testar esse codigo que está no site que vc passou Carlos_Santiago.
obrigado.
Fiz o teste com o seguinte codigo:
File file = new File(this.path + fileList[i]); // já tentei sem o this.path
// Destination directory
File dir = new File(this.path+"old/");
// Move file to new directory
boolean success = file.renameTo(new File(dir, file.getName()));
if (!success) {
// File was not successfully moved
}
Não funcionou, quer dizer, funcionou, porem sempre retorna false.
Isso pode ser por estar sendo rodado na minha maquina, se eu colocar rodando o .jar no UNIX , irá funcionar?
Fabiano.