Copiar e colar

7 respostas
javafxjava
777

Olá, quero saber como posso copiar um diretório e/ou um arquivo e colocar em outro diretório.

7 Respostas

1
staroski

Pode criar um método igual à esse:

public void copiar(InputStream origem, OutputStream destino) throws IOException {
    byte[] bytes = new byte[8192];
    for (int lidos = -1; (lidos = origem.read(bytes)) != -1; destino.write(bytes, 0, lidos)) {}
    destino.flush();
}

E utilizar da seguinte forma:

InputStream arquivoOrigem = new FileInputStream("caminho do arquivo de origem");
OutputStream arquivoDestino = new FileOutputStream("caminho do arquivo de destino");
copiar(arquivoOrigem, arquivoDestino);
arquivoOrigem.close();
arquivoDestino.close();
fventurajr

Muito interessante, mas tenho uma dúvida. Existe no Java como em algumas linguagens uma função estática que permita invocar tarefas de linha de comando? Algo como system.exec(“dir”); ou system.execute(“copy arqA.txt arqB.txt”); Imagino que se isso existir o Java deve abrir uma thread que é executada à parte e por isso deve ser usada com critério.

staroski

Com a classe Runtime você consegue isso.
Mas leia a documentação dos métodos com atenção, pois dependendo do tipo de programa que você for executar, pode ser necessário você criar explicitamente Threads para ler a saída e os erros do programa que foi executado.

Nesta página tem um exemplo que escrevi há alguns anos.

777

Mas dá pra fazer getClass().getResource() no FileInputStream?

staroski

O método getClass() é herdado da classe Object.
Porque você quer usar o getClass().getResource()?
Você quer copiar arquivos ou quer extrair conteúdo do seu JAR para um diretório?
Se quer extrair conteúdo do JAR, não adianta usar o getClass().getResource(), tem que usar getClass().getResourceAsStream().

777

Não, eu deixei arquivos em uma package diferente, arquivos .bat por exemplo.

Criado 15 de outubro de 2019
Ultima resposta 16 de out. de 2019
Respostas 7
Participantes 4