Classe File e criar pastas

8 respostas
N

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:

8 Respostas

alexvingg
// 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();

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

Da uma pesquisada melhor no google cara.

E

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

N

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

N

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

Obrigado pelo link, mesmo assim.

alexvingg

Não conseguir entender oque você quer.

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

E

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

N

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

jweibe

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();
Criado 11 de agosto de 2011
Ultima resposta 11 de ago. de 2011
Respostas 8
Participantes 4