[RESOLVIDO] Dúvida - erro ao copiar arquivos de um diretório para outro

2 respostas
D

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!

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());		
		 
	}

2 Respostas

T

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.

D
**
	 * 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();
			}
		}		 
	}
Criado 9 de março de 2009
Ultima resposta 10 de mar. de 2009
Respostas 2
Participantes 2