Classe File e criar pastas

Boa tarde pessoal, estou com uma dúvida, que provavelmentes vocês podem me ajudar.

Suponhamos que eu tenha:

C:\users\USUARIO\Documents\a.txt

Eu quero copiar esse arquivo para outro lugar, suponhamos pasta1, mas nesse caso, o resultado seria o seguinte:

C:\users\USUaARIO\Documents\pasta1\C\users\USUARIO\Documents\a.txt

viram?
Todas as pastas “pais” do arquivo devem ser criado.

Pensei em uma lógica, mas seria inútil postar pois esta errada, antes mesmo de compilar já tinha visto o erro.

Agradeço desde já. :slight_smile:

[code]// Cria channel na origem
FileChannel oriChannel = new FileInputStream(?Caminho Origem?).getChannel();
// Cria channel no destino
FileChannel destChannel = new FileOutputStream(?Caminho Destino?).getChannel();
// Copia conteúdo da origem no destino
destChannel.transferFrom(oriChannel, 0, oriChannel.size());

// Fecha channels
oriChannel.close();
destChannel.close();[/code]

http://www.ewerton.com/java/copiando-arquivos-de-um-diretorio-para-outro-no-java

Da uma pesquisada melhor no google cara.

http://download.oracle.com/javase/6/docs/api/java/io/File.html#mkdirs()

Amigo, a parte de copiar o arquivo é simples, estou com dificuldades para criar as pastas que sao “pais” do Origem, na pasta destino.

Sim, eu sei sobre o File.mkdir();

Obrigado pelo link, mesmo assim.

Não conseguir entender oque você quer.

Coloca o que vc já fez de códgio.

Não é o mkdir (que cria um de cada vez). É o mkdirs (que cria os subdiretórios intermediários). Simplesmente siga o link

Hm, sim, o mkdirs funcionou, ele realmente cria as pastas intermediarias.

Cara vai me contribuição ai…

   //Caminho do arquivo original
		File pathAtual = new File("/home/linux/a.txt");
		
		//Caminho a ser criado: /home/linux/file/home/linux/
		File pathNovo = new File("/home/linux/file/"+pathAtual.getParent());
		
		//Arquivo no novo diretorio : /home/linux/file/home/linux/a.txt
		File newArk = new File(pathNovo+"/"+pathAtual.getName());
		if(!pathNovo.isDirectory()){
			pathNovo.mkdirs();
			newArk.createNewFile();
		}else{
			newArk.createNewFile();
		}
		
		FileInputStream inputStream = new FileInputStream(pathAtual);
		FileOutputStream outputStream = new FileOutputStream(newArk);
		
		byte[] bs = new byte[(int) pathAtual.length()];
		int line = 0;
		while((line=inputStream.read(bs)) != -1){
			outputStream.write(bs, 0, line);
		}
		
		inputStream.close(); outputStream.close();