Alguns cenários exigem que você copie um arquivo em Java. Você pode estar criando um script simples para automatizar processos para um gerenciador de arquivos. Você pode até estar escrevendo um aplicativo completo que funcione com arquivos.

Há muitas maneiras de copiar um arquivo, dependendo do desempenho exigido, simplicidade ou até mesmo da versão Java que você está usando.

Como copiar arquivos usando FileInputStream e FileOutputStream

Esse método funciona lendo manualmente cada byte de dados do arquivo e gravando-o em um novo destino. Ao contrário do método Files.copy abaixo, você pode usar esse método para todas as versões do Java, incluindo Java 6 e anteriores.

Ele usa a classe FileInputStream para ler bytes de um arquivo de origem e o FileOutputStream para gravar bytes no destino.

  1. Crie um arquivo em qualquer lugar do seu computador chamado "SimpleScript.java".
  2. Abra o arquivo em um editor de texto ou IDE e copie o código base a seguir para o aplicativo.
    importar java.io. IOException;

    classeSimpleScript

    {
    públicoestáticovazioa Principal(String argumentos[])lança IOException {
    // Seu código aqui
    }
    }

  3. Importe essas classes adicionais de fluxo de entrada e fluxo de saída na parte superior do arquivo, logo após a primeira instrução de importação.
    importar java.io. Arquivo;
    importar java.io. Fluxo de Entrada;
    importar java.io. OutputStream;
    importar java.io. FileInputStream;
    importar java.io. FileOutputStream;
  4. Crie um novo arquivo chamado "Copy-File-1.txt", na mesma pasta do arquivo SimpleScript.java. Adicione qualquer conteúdo escrito dentro do arquivo.
  5. Na mesma pasta, crie também um novo diretório chamado "Destino". O objetivo é copiar o arquivo "Copy-File-1.txt" para a nova pasta.
  6. Dentro da função principal da classe, use a classe File para criar dois novos objetos de arquivo. A origem, que será o arquivo que você deseja copiar, e o destino, que será para onde você deseja copiar o arquivo. Se o arquivo de destino não existir, seu programa criará um novo.
    classeSimpleScript{ 
    públicoestáticovazioa Principal(String argumentos[])lança IOException {
    // 1ª maneira de copiar um arquivo
    Origem do arquivo = novo File("Copiar-Arquivo-1.TXT");
    Destino do arquivo = novo File("Destino/Copiar-Arquivo-1.TXT");
    }
    }
  7. Depois disso, crie um objeto InputStream e OutputStream.
    Entrada de fluxo de entrada = nulo;
    Saída OutputStream = nulo;
  8. Use o fluxo de entrada para ler os dados em bytes e o fluxo de saída para gravar os dados no novo local.
    tentar {
    // Cria objetos FileInputStream e FileOutputStream
    entrada = novo FileInputStream (fonte);
    saída = novo FileOutputStream (destino);
    byte[] buf = novobyte[1024];
    int bytesRead;

    // Escreve bytes no destino
    enquanto ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, bytesRead);
    }
    } truque (IOException e) {
    e.printStackTrace();
    System.out.println("Não foi possível copiar o arquivo para o destino: " + destination.getPath() + ". Verificar E se a pasta ou arquivo já existe.");
    } finalmente {
    // Fecha os streams
    E se (entrada!= nulo) {
    entrada.fechar();
    }

    E se (saída!= nulo) {
    saída.fechar();
    }
    }

    System.out.println("Arquivo copiado");

  9. Para executar o script, abra uma linha de comando. Navegue até a pasta onde você armazenou seu arquivo Java usando o comando cd no Prompt de Comando do Windows ou o terminal Mac.
    cd Área de Trabalho
  10. Para compilar o script, salve o arquivo Java e execute o Javac comando na linha de comando:
    javac SimpleScript.java
  11. Para executar o script, use o Java comando:
    java SimpleScript
    Você deve ver uma única linha de saída sem erros:
  12. Navegue até a pasta "Destino" para visualizar o arquivo copiado.
  13. Abra o arquivo para visualizar o conteúdo que seu programa copiou do arquivo original.

Como copiar arquivos usando Files.copy

Se você estiver usando Java 7 ou posterior, poderá usar o método Files.copy. Este método é geralmente uma implementação mais simples. De acordo com Documentação Java, há várias sobrecargas para a função.

Por exemplo, o método Files.copy também pode usar um fluxo de entrada para copiar arquivos de um local para outro, mas por meio de um método que usa menos código. Você também pode usar Caminhos ou especificar como deseja que o método copie seu arquivo.

  1. Crie um novo arquivo chamado "Copy-File-2.txt", na mesma pasta do arquivo SimpleScript.java. Adicione qualquer conteúdo escrito dentro do arquivo.
  2. Na parte superior do arquivo, adicione importações para o arquivo "java.nio.file. Caminhos" e "java.nio.file. Arquivos" classes.
    importar java.nio.file. Caminhos;
    importar java.nio.file. Arquivos;
  3. Adicione duas strings, representando o caminho de arquivo relativo para o arquivo de origem e o destino. Use o método Files.copy, que já tratará da lógica para copiar o arquivo para o destino.
    String copySource = "Copy-File-2.TXT";
    String copyDestination = "Destination/Copy-File-2.TXT";

    tentar {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } truque (Exceção e) {
    System.out.println("Não foi possível copiar o arquivo para o destino: " + copyDestination + ". Verificar E se a pasta ou arquivo já existe.");
    }
    System.out.println("2nd Arquivo copiado");

  4. Execute o script usando os comandos Javac e Java.
  5. Navegue até a pasta "Destino" para visualizar o arquivo copiado.

Como copiar arquivos usando FileChannel.transferTo()

De acordo com Documentação Java, esse método pode ser uma maneira potencialmente mais rápida de copiar arquivos. No entanto, isso dependerá da maneira como você implementa a função.

  1. Crie um novo arquivo chamado "Copy-File-3.txt", na mesma pasta do arquivo SimpleScript.java. Adicione algum conteúdo de amostra a este arquivo.
  2. Na parte superior do SimpleScript.java, importe o arquivo "java.nio.channels. FileChannel" junto com três das classes anteriores relacionadas a arquivos comuns do pacote io.
    importar java.io. Arquivo;
    importar java.io. FileInputStream;
    importar java.io. FileOutputStream;
    importar java.nio.channels. Canal de Arquivo;
  3. Crie objetos de arquivo para a origem e o destino e use-os para criar um fluxo de entrada e um fluxo de saída.
    arquivo src = novo File("Copiar-Arquivo-3.TXT");
    Arquivo dst = novo File("Destino/Copiar-Arquivo-3.TXT");
    FileInputStream inStream = novo FileInputStream (src);
    FileOutputStream outStream = novo FileOutputStream (dst);
  4. Use o método TransferTo da classe FileChannel para copiar o arquivo para seu destino.
    tentar {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } truque (Exceção e) {
    System.out.println("Não foi possível copiar o arquivo para o destino: " + dst.getPath() + ". Verificar E se a pasta ou arquivo já existe.");
    } finalmente {
    // Fecha os streams
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Arquivo copiado");
  5. Execute o script usando os comandos Javac e Java.
  6. Navegue até a pasta "Destino" para visualizar o arquivo copiado.

Copiar arquivos em Java é apenas o começo

Há muitas maneiras de copiar um arquivo em Java. Três maneiras possíveis incluem usar o método de fluxo tradicional, o método Files.copy ou o método transferTo.

Existem muitas outras operações do gerenciador de arquivos que você pode realizar usando Java. Algumas delas incluem mover arquivos, excluir arquivos ou compactar arquivos. Isso pode ser útil para aprender se você precisar automatizar determinados processos no gerenciador de arquivos.