Nogle få scenarier kræver, at du kopierer en fil i Java. Du opretter muligvis et simpelt script til at automatisere processer til en filhåndtering. Du kan endda skrive et komplet program, der fungerer med filer.

Der er mange måder, hvorpå du kan kopiere en fil, afhængigt af din nødvendige ydeevne, enkelhed eller endda hvilken Java-version du bruger.

Sådan kopieres filer ved hjælp af FileInputStream og FileOutputStream

Denne metode virker ved manuelt at læse hver byte af data fra filen og skrive den til en ny destination. I modsætning til Files.copy-metoden nedenfor, kan du bruge denne metode til alle Java-versioner, inklusive Java 6 og tidligere.

Den bruger FileInputStream-klassen til at læse bytes fra en kildefil, og FileOutputStream til at skrive bytes til destinationen.

  1. Opret en fil hvor som helst på din computer kaldet "SimpleScript.java".
  2. Åbn filen i en teksteditor eller IDE, og kopier følgende basiskode til applikationen.
    importere java.io. IOException;

    klasseSimpleScript{
    offentligstatiskugyldigvigtigste(String args[])kaster IOException {
    // Din kode her
    }
    }

  3. instagram viewer
  4. Importer disse ekstra Input Stream og Output Stream klasser øverst i filen, lige efter den første importerklæring.
    importere java.io. Fil;
    importere java.io. InputStream;
    importere java.io. OutputStream;
    importere java.io. FileInputStream;
    importere java.io. FileOutputStream;
  5. Opret en ny fil kaldet "Copy-File-1.txt", i samme mappe som din SimpleScript.java-fil. Tilføj eventuelt skrevet indhold i filen.
  6. I samme mappe skal du også oprette en ny mappe kaldet "Destination". Målet er at kopiere filen "Copy-File-1.txt" til den nye mappe.
  7. Inde i klassens hovedfunktion skal du bruge klassen File til at oprette to nye filobjekter. Kilden, som vil være den fil, du vil kopiere, og destinationen, som vil være, hvor du vil kopiere filen til. Hvis destinationsfilen ikke eksisterer, vil dit program oprette en ny.
    klasseSimpleScript{ 
    offentligstatiskugyldigvigtigste(String args[])kaster IOException {
    // 1. måde at kopiere en fil på
    Filkilde = ny Fil("Kopier-Fil-1.txt");
    Fildestination = ny Fil("Destination/Kopier-Fil-1.txt");
    }
    }
  8. Derefter skal du oprette et InputStream- og OutputStream-objekt.
    InputStream input = nul;
    OutputStream output = nul;
  9. Brug inputstrømmen til at læse dataene i bytes, og outputstrømmen til at skrive dataene til den nye placering.
    prøve {
    // Opret FileInputStream- og FileOutputStream-objekter
    input = ny FileInputStream (kilde);
    output = ny FileOutputStream (destination);
    byte[] buf = nybyte[1024];
    int bytesLæs;

    // Skriv bytes til destinationen
    mens ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, bytesLæs);
    }
    } fangst (IOException e) {
    e.printStackTrace();
    System.out.println("Kunne ikke kopiere filen til destinationen: " + destination.getPath() + ". Kontrollere hvis mappen eller filen findes allerede.");
    } langt om længe {
    // Luk vandløbene
    hvis (input != nul) {
    input.close();
    }

    hvis (output != nul) {
    output.close();
    }
    }

    System.out.println("Fil kopieret");

  10. For at køre scriptet skal du åbne en kommandolinje. Naviger til den mappe, hvor du gemte din Java-fil ved hjælp af cd-kommandoen på Windows kommandoprompt eller Mac-terminalen.
    cd Desktop
  11. For at kompilere scriptet skal du gemme Java-filen og køre Javac kommando i kommandolinjen:
    javac SimpleScript.java
  12. For at køre scriptet skal du bruge Java kommando:
    java SimpleScript
    Du bør se en enkelt outputlinje uden fejl:
  13. Naviger til din "Destination"-mappe for at se din kopierede fil.
  14. Åbn filen for at se indholdet, som dit program kopierede fra den originale fil.

Sådan kopierer du filer ved hjælp af Files.copy

Hvis du bruger Java 7 eller nyere, kan du bruge Files.copy-metoden. Denne metode er generelt en enklere implementering. Ifølge Java dokumentation, er der flere overbelastninger for funktionen.

For eksempel kan Files.copy-metoden også bruge en inputstrøm til at kopiere filer fra en placering til en anden, men gennem en metode, der bruger mindre kode. Du kan også bruge Stier, eller selv angive, hvordan du vil have metoden til at kopiere din fil.

  1. Opret en ny fil kaldet "Copy-File-2.txt", i samme mappe som din SimpleScript.java-fil. Tilføj eventuelt skrevet indhold i filen.
  2. Øverst i filen skal du tilføje importer til "java.nio.file. Stier" og "java.nio.file. filer" klasser.
    importere java.nio.fil. stier;
    importere java.nio.fil. Filer;
  3. Tilføj to strenge, der repræsenterer den relative filsti for kildefilen og destinationen. Brug metoden Files.copy, som allerede vil håndtere logikken for at kopiere filen til destinationen.
    String copySource = "Copy-File-2.txt";
    String copyDestination = "Destination/Copy-File-2.txt";

    prøve {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } fangst (Undtagelse e) {
    System.out.println("Kunne ikke kopiere filen til destinationen: " + copyDestination + ". Kontrollere hvis mappen eller filen findes allerede.");
    }
    System.out.println("2nd Fil kopieret");

  4. Kør scriptet ved hjælp af Java- og Java-kommandoerne.
  5. Naviger til din "Destination"-mappe for at se din kopierede fil.

Sådan kopieres filer ved hjælp af FileChannel.transferTo()

Ifølge Java dokumentation, kan denne metode være en potentielt hurtigere måde at kopiere filer på. Dette vil dog afhænge af, hvordan du implementerer funktionen.

  1. Opret en ny fil kaldet "Copy-File-3.txt", i samme mappe som din SimpleScript.java-fil. Tilføj noget eksempelindhold til denne fil.
  2. Øverst i SimpleScript.java skal du importere "java.nio.channels. FileChannel"-klassen sammen med tre af de tidligere almindelige filrelaterede klasser fra io-pakken.
    importere java.io. Fil;
    importere java.io. FileInputStream;
    importere java.io. FileOutputStream;
    importere java.nio.kanaler. FileChannel;
  3. Opret filobjekter til kilden og destinationen, og brug dem til at oprette en inputstrøm og en outputstrøm.
    Fil src = ny Fil("Kopier-Fil-3.txt");
    Fil dst = ny Fil("Destination/Kopier-Fil-3.txt");
    FileInputStream inStream = ny FileInputStream (src);
    FileOutputStream outStream = ny FileOutputStream (dst);
  4. Brug TransferTo-metoden fra FileChannel-klassen til at kopiere filen til dens destination.
    prøve {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } fangst (Undtagelse e) {
    System.out.println("Kunne ikke kopiere filen til destinationen: " + dst.getPath() + ". Kontrollere hvis mappen eller filen findes allerede.");
    } langt om længe {
    // Luk vandløbene
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Fil kopieret");
  5. Kør scriptet ved hjælp af Java- og Java-kommandoerne.
  6. Naviger til din "Destination"-mappe for at se din kopierede fil.

Kopiering af filer i Java er kun begyndelsen

Der er mange måder, hvorpå du kan kopiere en fil i Java. Tre mulige måder inkluderer at bruge den traditionelle stream-metode, Files.copy-metoden eller transferTo-metoden.

Der er mange andre filhåndteringsoperationer, du kan udføre ved hjælp af Java. Nogle af disse omfatter flytning af filer, sletning af filer eller zipping af filer. Disse kan være nyttige at lære, hvis du har brug for at automatisere bestemte processer i filhåndteringen.