Alcuni scenari richiedono la copia di un file in Java. Potresti creare un semplice script per automatizzare i processi per un file manager. Potresti anche scrivere un'applicazione in piena regola che funziona con i file.

Esistono molti modi per copiare un file, a seconda delle prestazioni richieste, della semplicità o anche della versione Java in uso.

Come copiare file utilizzando FileInputStream e FileOutputStream

Questo metodo funziona leggendo manualmente ogni byte di dati dal file e scrivendolo in una nuova destinazione. A differenza del metodo Files.copy riportato di seguito, è possibile utilizzare questo metodo per tutte le versioni Java, incluso Java 6 e precedenti.

Utilizza la classe FileInputStream per leggere i byte da un file di origine e FileOutputStream per scrivere i byte nella destinazione.

  1. Crea un file ovunque sul tuo computer chiamato "SimpleScript.java".
  2. Aprire il file in un editor di testo o IDE e copiare il codice di base seguente nell'applicazione.
    importare java.io. IOException;
    instagram viewer

    classeSimpleScript{
    pubblicostaticovuotoprincipale(Argomenti stringa[])lancia IOException {
    // Il tuo codice qui
    }
    }

  3. Importa queste classi aggiuntive Input Stream e Output Stream nella parte superiore del file, subito dopo la prima istruzione di importazione.
    importare java.io. File;
    importare java.io. InputStream;
    importare java.io. OutputStream;
    importare java.io. FileInputStream;
    importare java.io. FileOutputStream;
  4. Crea un nuovo file chiamato "Copy-File-1.txt", nella stessa cartella del tuo file SimpleScript.java. Aggiungi qualsiasi contenuto scritto all'interno del file.
  5. Nella stessa cartella, crea anche una nuova directory chiamata "Destinazione". L'obiettivo è copiare il file "Copy-File-1.txt" nella nuova cartella.
  6. All'interno della funzione principale della classe, usa la classe File per creare due nuovi oggetti file. L'origine, che sarà il file che desideri copiare, e la destinazione, che sarà la posizione in cui desideri copiare il file. Se il file di destinazione non esiste, il tuo programma ne creerà uno nuovo.
    classeSimpleScript{ 
    pubblicostaticovuotoprincipale(Argomenti stringa[])lancia IOException {
    // 1° modo per copiare un file
    Fonte del file = nuovo File("Copia-File-1.testo");
    Destinazione file = nuovo File("Destinazione/Copia-File-1.testo");
    }
    }
  7. Successivamente, crea un oggetto InputStream e OutputStream.
    InputStream input = nullo;
    Uscita OutputStream = nullo;
  8. Utilizzare il flusso di input per leggere i dati in byte e il flusso di output per scrivere i dati nella nuova posizione.
    Tentativo {
    // Crea oggetti FileInputStream e FileOutputStream
    ingresso = nuovo FileInputStream (fonte);
    uscita = nuovo FileOutputStream (destinazione);
    byte[] buff = nuovobyte[1024];
    int byteLeggi;

    // Scrive byte nella destinazione
    mentre ((bytesRead = input.read (buf)) > 0) {
    output.write (buff, 0, byteLeggi);
    }
    } presa (IOException e) {
    e.printStackTrace();
    System.out.println("Impossibile copiare il file nella destinazione: " + destination.getPath() + ". Dai un'occhiata Se la cartella o il file esiste già.");
    } finalmente {
    // Chiudi i flussi
    Se (immissione != nullo) {
    input.close();
    }

    Se (uscita!= nullo) {
    output.close();
    }
    }

    System.out.println("File copiato");

  9. Per eseguire lo script, apri una riga di comando. Passare alla cartella in cui è stato archiviato il file Java utilizzando il comando cd sul file Prompt dei comandi di Windows o il terminale Mac.
    CD Desktop
  10. Per compilare lo script, salva il file Java ed esegui il file Javac comando nella riga di comando:
    javac SimpleScript.java
  11. Per eseguire lo script, utilizzare il Giava comando:
    java SimpleScript
    Dovresti vedere una singola riga di output senza errori:
  12. Passa alla cartella "Destinazione" per visualizzare il file copiato.
  13. Apri il file per visualizzare il contenuto, che il tuo programma ha copiato dal file originale.

Come copiare file utilizzando Files.copy

Se utilizzi Java 7 o versioni successive, puoi utilizzare il metodo Files.copy. Questo metodo è generalmente un'implementazione più semplice. Secondo il Documentazione Java, sono presenti più sovraccarichi per la funzione.

Ad esempio, il metodo Files.copy può anche utilizzare un flusso di input per copiare file da una posizione a un'altra, ma tramite un metodo che utilizza meno codice. Puoi anche usare Percorsi o specificare tu stesso come vuoi che il metodo copi il tuo file.

  1. Crea un nuovo file chiamato "Copy-File-2.txt", nella stessa cartella del tuo file SimpleScript.java. Aggiungi qualsiasi contenuto scritto all'interno del file.
  2. Nella parte superiore del file, aggiungi le importazioni per il file "java.nio.file. Percorsi" e "java.nio.file. classi di file".
    importare java.nio.file. Percorsi;
    importare java.nio.file. File;
  3. Aggiungi due stringhe, che rappresentano il percorso del file relativo per il file di origine e la destinazione. Utilizzare il metodo Files.copy, che gestirà già la logica per copiare il file nella destinazione.
    String copySource = "Copia-File-2.testo";
    String copyDestination = "Destinazione/Copia-File-2.testo";

    Tentativo {
    Files.copy (Percorsi.get (copySource), Paths.get (copyDestination));
    } presa (Eccezione e) {
    System.out.println("Impossibile copiare il file nella destinazione: " + copyDestination + ". Dai un'occhiata Se la cartella o il file esiste già.");
    }
    System.out.println("2nd File copiato");

  4. Eseguire lo script utilizzando i comandi Javac e Java.
  5. Passa alla cartella "Destinazione" per visualizzare il file copiato.

Come copiare file utilizzando FileChannel.transferTo()

Secondo il Documentazione Java, questo metodo può essere un modo potenzialmente più veloce per copiare i file. Tuttavia, ciò dipenderà dal modo in cui implementi la funzione.

  1. Crea un nuovo file chiamato "Copy-File-3.txt", nella stessa cartella del tuo file SimpleScript.java. Aggiungi del contenuto di esempio a questo file.
  2. Nella parte superiore di SimpleScript.java, importa il file "java.nio.channels. FileChannel" insieme a tre delle precedenti classi comuni relative ai file del pacchetto io.
    importare java.io. File;
    importare java.io. FileInputStream;
    importare java.io. FileOutputStream;
    importare canali.java.nio. FileChannel;
  3. Crea oggetti file per l'origine e la destinazione e usa quelli per creare un flusso di input e un flusso di output.
    Sorgente file = nuovo File("Copia-File-3.testo");
    File dst = nuovo File("Destinazione/Copia-File-3.testo");
    FileInputStream inStream = nuovo FileInputStream (src);
    FileOutputStream outStream = nuovo FileOutputStream (dst);
  4. Utilizzare il metodo TransferTo dalla classe FileChannel per copiare il file nella sua destinazione.
    Tentativo {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } presa (Eccezione e) {
    System.out.println("Impossibile copiare il file nella destinazione: " + dst.getPath() + ". Dai un'occhiata Se la cartella o il file esiste già.");
    } finalmente {
    // Chiudi i flussi
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd File copiato");
  5. Eseguire lo script utilizzando i comandi Javac e Java.
  6. Passa alla cartella "Destinazione" per visualizzare il file copiato.

La copia di file in Java è solo l'inizio

Esistono molti modi per copiare un file in Java. Tre possibili modi includono l'utilizzo del metodo di flusso tradizionale, il metodo Files.copy o il metodo transferTo.

Ci sono molte altre operazioni di file manager che puoi eseguire usando Java. Alcuni di questi includono lo spostamento di file, l'eliminazione di file o la compressione di file. Questi possono essere utili per imparare se è necessario automatizzare determinati processi nel file manager.