Olá, quero saber como posso copiar um diretório e/ou um arquivo e colocar em outro diretório.
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();
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.
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.
Mas dá pra fazer getClass().getResource() no FileInputStream?
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()
.
Não, eu deixei arquivos em uma package diferente, arquivos .bat por exemplo.