Jotkut skenaariot edellyttävät tiedoston kopioimista Javassa. Olet ehkä luomassa yksinkertaista komentosarjaa tiedostonhallinnan prosessien automatisoimiseksi. Voit jopa kirjoittaa täydellisen sovelluksen, joka toimii tiedostojen kanssa.

Voit kopioida tiedoston monilla tavoilla riippuen vaaditusta suorituskyvystä, yksinkertaisuudesta tai jopa käyttämästäsi Java-versiosta.

Tiedostojen kopioiminen FileInputStreamin ja FileOutputStreamin avulla

Tämä menetelmä toimii lukemalla manuaalisesti jokaisen datatavun tiedostosta ja kirjoittamalla sen uuteen kohteeseen. Toisin kuin alla oleva Files.copy-menetelmä, voit käyttää tätä menetelmää kaikissa Java-versioissa, mukaan lukien Java 6 ja sitä vanhemmat.

Se käyttää FileInputStream-luokkaa tavujen lukemiseen lähdetiedostosta ja FileOutputStreamia tavujen kirjoittamiseen kohteeseen.

  1. Luo tiedosto mihin tahansa tietokoneellesi nimeltä "SimpleScript.java".
  2. Avaa tiedosto tekstieditorissa tai IDE: ssä ja kopioi seuraava peruskoodi sovellukseen.
    tuonti java.io. IOException;
    instagram viewer

    luokkaaSimpleScript{
    julkinenstaattinenmitätönpää(Joukarit[])heittoja IOException {
    // Koodisi tässä
    }
    }

  3. Tuo nämä ylimääräiset Input Stream- ja Output Stream -luokat tiedoston yläosassa heti ensimmäisen tuontikäskyn jälkeen.
    tuonti java.io. tiedosto;
    tuonti java.io. InputStream;
    tuonti java.io. OutputStream;
    tuonti java.io. FileInputStream;
    tuonti java.io. FileOutputStream;
  4. Luo uusi tiedosto nimeltä "Copy-File-1.txt" samaan kansioon kuin SimpleScript.java-tiedosto. Lisää tiedoston sisään kirjoitettu sisältö.
  5. Luo samaan kansioon myös uusi hakemisto nimeltä "Kohde". Tavoitteena on kopioida "Copy-File-1.txt"-tiedosto uuteen kansioon.
  6. Luo luokan päätoiminnon sisällä Tiedosto-luokkaa kahden uuden tiedostoobjektin luomiseen. Lähde, joka on tiedosto, jonka haluat kopioida, ja kohde, johon haluat kopioida tiedoston. Jos kohdetiedostoa ei ole olemassa, ohjelmasi luo uuden.
    luokkaaSimpleScript{ 
    julkinenstaattinenmitätönpää(Joukarit[])heittoja IOException {
    // Ensimmäinen tapa kopioida tiedosto
    Tiedoston lähde = Uusi Tiedosto("Kopioi-tiedosto-1.txt");
    Tiedoston kohde = Uusi Tiedosto("Kohde/Kopioi-tiedosto-1.txt");
    }
    }
  7. Luo sen jälkeen InputStream- ja OutputStream-objekti.
    InputStream input = tyhjä;
    OutputStream-lähtö = tyhjä;
  8. Käytä syöttövirtaa tietojen lukemiseen tavuina ja lähtövirtaa tietojen kirjoittamiseen uuteen paikkaan.
    yrittää {
    // Luo FileInputStream- ja FileOutputStream-objekteja
    syöttö = Uusi FileInputStream (lähde);
    lähtö = Uusi FileOutputStream (kohde);
    tavu[] buf = Uusitavu[1024];
    int bytes Read;

    // Kirjoita tavuja määränpäähän
    sillä aikaa ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, bytesRead);
    }
    } ottaa kiinni (IOPoikkeus e) {
    e.printStackTrace();
    System.out.println("Tiedostoa ei voitu kopioida kohteeseen: " + määränpää.getPath() + ". Tarkistaa jos kansio tai tiedosto on jo olemassa.");
    } vihdoinkin {
    // Sulje virrat
    jos (syöttö != tyhjä) {
    input.close();
    }

    jos (tulostus != tyhjä) {
    output.close();
    }
    }

    System.out.println("Tiedosto kopioitu");

  9. Suorita komentosarja avaamalla komentorivi. Siirry kansioon, johon tallensit Java-tiedoston, käyttämällä cd-komentoa Windowsin komentokehote tai Mac-päätettä.
    CD Työpöytä
  10. Kääntääksesi komentosarjan, tallenna Java-tiedosto ja suorita Javac komento komentorivillä:
    javac SimpleScript.java
  11. Suorita komentosarja käyttämällä Java komento:
    java SimpleScript
    Sinun pitäisi nähdä yksi tulosrivi ilman virheitä:
  12. Siirry "Kohde"-kansioosi nähdäksesi kopioimasi tiedostosi.
  13. Avaa tiedosto nähdäksesi sisällön, jonka ohjelmasi kopioi alkuperäisestä tiedostosta.

Tiedostojen kopioiminen Files.copyn avulla

Jos käytät Java 7:ää tai uudempaa, voit käyttää Files.copy-menetelmää. Tämä menetelmä on yleensä yksinkertaisempi toteutus. Mukaan Java-dokumentaatio, toiminnolla on useita ylikuormituksia.

Esimerkiksi Files.copy-menetelmä voi myös käyttää syöttövirtaa tiedostojen kopioimiseen paikasta toiseen, mutta menetelmällä, joka käyttää vähemmän koodia. Voit myös käyttää polkuja tai määrittää itse, kuinka haluat menetelmän kopioivan tiedostosi.

  1. Luo uusi tiedosto nimeltä "Copy-File-2.txt" samaan kansioon kuin SimpleScript.java-tiedosto. Lisää tiedoston sisään kirjoitettu sisältö.
  2. Lisää tiedoston yläosaan tuontitiedostot "java.nio.file. Polut" ja "java.nio.file. Tiedostot" luokkiin.
    tuonti java.nio.tiedosto. Polut;
    tuonti java.nio.tiedosto. Tiedostot;
  3. Lisää kaksi merkkijonoa, jotka edustavat lähdetiedoston ja kohteen suhteellista tiedostopolkua. Käytä Files.copy-menetelmää, joka jo käsittelee logiikan tiedoston kopioimiseksi kohteeseen.
    String copySource = "Kopioi-tiedosto-2.txt";
    String copyDestination = "Kohde/Kopio-tiedosto-2.txt";

    yrittää {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } ottaa kiinni (Poikkeus e) {
    System.out.println("Tiedostoa ei voitu kopioida kohteeseen: " + copyDestination + ". Tarkistaa jos kansio tai tiedosto on jo olemassa.");
    }
    System.out.println("2nd Tiedosto kopioitu");

  4. Suorita komentosarja Javac- ja Java-komennoilla.
  5. Siirry "Kohde"-kansioosi nähdäksesi kopioimasi tiedostosi.

Tiedostojen kopioiminen FileChannel.transferTo() -sovelluksella

Mukaan Java-dokumentaatio, tämä menetelmä voi olla mahdollisesti nopeampi tapa kopioida tiedostoja. Tämä riippuu kuitenkin tavasta, jolla toiminto toteutetaan.

  1. Luo uusi tiedosto nimeltä "Copy-File-3.txt" samaan kansioon kuin SimpleScript.java-tiedosto. Lisää tähän tiedostoon näytesisältöä.
  2. Tuo SimpleScript.javan yläreunasta "java.nio.channels. FileChannel" luokka kolmen aikaisemman yleisen tiedostoihin liittyvän luokan rinnalla io-paketista.
    tuonti java.io. tiedosto;
    tuonti java.io. FileInputStream;
    tuonti java.io. FileOutputStream;
    tuonti java.nio.channels. tiedostokanava;
  3. Luo tiedostoobjekteja lähteelle ja kohteelle ja käytä niitä syöttövirran ja lähtövirran luomiseen.
    Tiedosto src = Uusi Tiedosto("Kopioi-tiedosto-3.txt");
    Tiedosto dst = Uusi Tiedosto("Kohde/Kopioi-tiedosto-3.txt");
    FileInputStream inStream = Uusi FileInputStream (src);
    FileOutputStream outStream = Uusi FileOutputStream (dst);
  4. Käytä FileChannel-luokan TransferTo-menetelmää kopioidaksesi tiedoston määränpäähänsä.
    yrittää {
    Tiedostokanava inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } ottaa kiinni (Poikkeus e) {
    System.out.println("Tiedostoa ei voitu kopioida kohteeseen: " + dst.getPath() + ". Tarkistaa jos kansio tai tiedosto on jo olemassa.");
    } vihdoinkin {
    // Sulje virrat
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Tiedosto kopioitu");
  5. Suorita komentosarja Javac- ja Java-komennoilla.
  6. Siirry "Kohde"-kansioosi nähdäksesi kopioimasi tiedostosi.

Tiedostojen kopioiminen Javassa on vasta alkua

Voit kopioida tiedoston Javassa monella tavalla. Kolme mahdollista tapaa ovat perinteinen suoratoistomenetelmä, Files.copy-menetelmä tai transferTo-menetelmä.

On monia muita tiedostonhallintatoimintoja, joita voit suorittaa Javalla. Joitakin näistä ovat tiedostojen siirtäminen, tiedostojen poistaminen tai tiedostojen pakkaaminen. Niistä voi olla hyötyä, jos haluat automatisoida tiettyjä prosesseja tiedostonhallinnassa.