Boa tarde pessoal, preciso de uma ajuda para copiar arquivos de um diretório para outro.
Criei o método abaixo onde recebe-se por parametros o diretório de origem e o diretório de destino.
Porém é lançada uma excessão: java.io.FileNotFoundException: /usr/teste/imagem/diretorioTeste (Is a directory)
Este caminho apresentado na excessão é o diretório de origem, e o mesmo existe.
O que estou fazendo de errado? obrigado!
[code] public void copiarArquivos(String origem, String destino) throws IOException{
FileChannel dirOrigem = new FileInputStream(origem.trim()).getChannel();
FileChannel dirDestino = new FileOutputStream(destino.trim()).getChannel();
dirDestino.transferFrom(dirOrigem, 0, dirOrigem.size());
}[/code]
O método transferFrom copia um arquivo de cada vez, não todos os arquivos de um diretório. Para copiar todos os arquivos de um diretório, faça uma rotina mais complicada.
[code]**
* Copia todos os arquivos de um diretório de origem para um diretório de destino.
* Se houver sub-diretórios no diretório de origem, os mesmos também serão copiados ao destino.
* @param String origem - Diretório ou arquivo de origem
* @param String destino - obrigatoriamente um diretório de destino
* @throws IOException
* @author Danilo
*/
public void copiarArquivos(File origem, File destino) throws IOException{
if(origem.isDirectory()){
/*Obtém tudo o que está dentro do diretório*/
String[] conteudo = origem.list();
for(int i=0; i<conteudo.length; i++){
File origemAux = new File(origem, conteudo[i]);
/*Se o conteúdo é uma pasta, cria a pasta no diretório de destino*/
if(origemAux.isDirectory()){
File destinoAux = new File(destino, conteudo[i]);
destinoAux.mkdirs();
copiarArquivos(origemAux, destinoAux);
}else{
copiarArquivos(origemAux, destino);
}
}
}else{
if(destino.isDirectory()){
File destinoAux = new File(destino, origem.getName());
FileChannel dirOrigem = new FileInputStream(origem).getChannel();
FileChannel dirDestino = new FileOutputStream(destinoAux).getChannel();
dirDestino.transferFrom(dirOrigem, 0, dirOrigem.size());
dirOrigem.close();
dirDestino.close();
}
}
}[/code]