Mõned stsenaariumid nõuavad faili kopeerimist Java-s. Võimalik, et loote failihalduri protsesside automatiseerimiseks lihtsa skripti. Võite isegi kirjutada täieliku rakenduse, mis töötab failidega.

Faili kopeerimiseks on mitmeid viise, olenevalt nõutavast jõudlusest, lihtsusest või isegi kasutatavast Java versioonist.

Failide kopeerimine FileInputStreami ja FileOutputStreami abil

See meetod toimib, lugedes käsitsi failist iga andmebaidi ja kirjutades need uude sihtkohta. Erinevalt allolevast Files.copy meetodist saate seda meetodit kasutada kõigi Java versioonide, sealhulgas Java 6 ja varasemate versioonide jaoks.

See kasutab baitide lugemiseks lähtefailist klassi FileInputStream ja baitide sihtkohta kirjutamiseks FileOutputStreami.

  1. Looge oma arvutis suvalises kohas fail nimega "SimpleScript.java".
  2. Avage fail tekstiredaktoris või IDE-s ja kopeerige rakendusse järgmine baaskood.
    importida java.io. IOException;

    klassSimpleScript{
    avalikstaatilinetühinepeamine(String args[])visked IOErand {
    // Sinu kood siin
    }
    }

  3. instagram viewer
  4. Importige need täiendavad sisendvoo ja väljundvoo klassid faili ülaosas kohe pärast esimest importimise avaldust.
    importida java.io. Fail;
    importida java.io. InputStream;
    importida java.io. OutputStream;
    importida java.io. FileInputStream;
    importida java.io. FileOutputStream;
  5. Looge SimpleScript.java failiga samasse kausta uus fail nimega "Copy-File-1.txt". Lisage faili sisse kirjutatud sisu.
  6. Samas kaustas loo ka uus kataloog nimega "Sihtkoht". Eesmärk on kopeerida fail "Copy-File-1.txt" uude kausta.
  7. Klassi põhifunktsioonis kasutage kahe uue failiobjekti loomiseks klassi Fail. Allikas, milleks on fail, mida soovite kopeerida, ja sihtkoht, kuhu soovite faili kopeerida. Kui sihtfaili pole, loob teie programm uue.
    klassSimpleScript{ 
    avalikstaatilinetühinepeamine(String args[])visked IOErand {
    // Esimene viis faili kopeerimiseks
    Faili allikas = uus File ("Kopeeri-fail-1.txt");
    Faili sihtkoht = uus Fail("Sihtkoht/Kopeeri-fail-1.txt");
    }
    }
  8. Pärast seda looge objekt InputStream ja OutputStream.
    InputStreami sisend = null;
    OutputStreami väljund = null;
  9. Kasutage sisendvoogu andmete lugemiseks baitides ja väljundvoogu andmete uude asukohta kirjutamiseks.
    proovige {
    // Looge FileInputStream ja FileOutputStream objekte
    sisend = uus FileInputStream (allikas);
    väljund = uus FileOutputStream (sihtkoht);
    bait[] buf = uusbait[1024];
    int bytesRead;

    // Kirjutage baite sihtkohta
    samal ajal ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, baitiRead);
    }
    } püüda (IOErand e) {
    e.printStackTrace();
    System.out.println("Faili ei saanud sihtkohta kopeerida: " + sihtkoht.getPath() + ". Kontrollima kui kaust või fail on juba olemas.");
    } lõpuks {
    // Sule vood
    kui (sisend != null) {
    input.close();
    }

    kui (väljund != null) {
    output.close();
    }
    }

    System.out.println("Fail kopeeritud");

  10. Skripti käivitamiseks avage käsurida. Navigeerige kausta, kuhu oma Java-faili salvestasite, kasutades käsku cd Windowsi käsuviip või Maci terminal.
    cd Töölaud
  11. Skripti kompileerimiseks salvestage Java-fail ja käivitage Javac käsk käsureal:
    javac SimpleScript.java
  12. Skripti käivitamiseks kasutage Java käsk:
    java SimpleScript
    Peaksite nägema ühte väljundi rida ilma vigadeta:
  13. Kopeeritud faili vaatamiseks liikuge oma kausta "Sihtkoht".
  14. Avage fail, et vaadata sisu, mille teie programm kopeeris algsest failist.

Kuidas faile kopeerida rakendusega Files.copy

Kui kasutate Java 7 või uuemat versiooni, saate kasutada meetodit Files.copy. See meetod on üldiselt lihtsam rakendus. Vastavalt Java dokumentatsioon, on funktsioonil mitu ülekoormust.

Näiteks võib Files.copy meetodil failide ühest asukohast teise kopeerimiseks kasutada ka sisendvoogu, kuid vähem koodi kasutava meetodi abil. Võite kasutada ka teid või määrata ise, kuidas soovite faili kopeerida.

  1. Looge SimpleScript.java failiga samasse kausta uus fail nimega "Copy-File-2.txt". Lisage faili sisse kirjutatud sisu.
  2. Lisage faili ülaosas impordid faili "java.nio.file. Paths" ja "java.nio.file. Failid" klassid.
    importida java.nio.fail. Rajad;
    importida java.nio.fail. failid;
  3. Lisage kaks stringi, mis tähistavad lähtefaili ja sihtkoha suhtelist failiteed. Kasutage meetodit Files.copy, mis juba tegeleb faili sihtkohta kopeerimise loogikaga.
    String copySource = "Kopeeri-fail-2.txt";
    String copyDestination = "Sihtkoht/Kopeeri-fail-2.txt";

    proovige {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } püüda (Erand e) {
    System.out.println("Faili ei saanud sihtkohta kopeerida: " + copyDestination + ". Kontrollima kui kaust või fail on juba olemas.");
    }
    System.out.println("2nd fail kopeeritud");

  4. Käivitage skript Java- ja Java-käskude abil.
  5. Kopeeritud faili vaatamiseks liikuge oma kausta "Sihtkoht".

Kuidas faile kopeerida, kasutades FileChannel.transferTo()

Vastavalt Java dokumentatsioon, võib see meetod olla potentsiaalselt kiirem viis failide kopeerimiseks. See oleneb aga funktsiooni rakendamise viisist.

  1. Looge SimpleScript.java failiga samasse kausta uus fail nimega "Copy-File-3.txt". Lisage sellele failile näidissisu.
  2. Importige SimpleScript.java ülaosas fail "java.nio.channels. FileChannel" klassi koos kolme eelmise tavalise failiga seotud klassiga io paketist.
    importida java.io. Fail;
    importida java.io. FileInputStream;
    importida java.io. FileOutputStream;
    importida java.nio.channels. FileChannel;
  3. Looge allika ja sihtkoha jaoks failiobjektid ning kasutage neid sisendvoo ja väljundvoo loomiseks.
    Fail src = uus File ("Kopeeri-fail-3.txt");
    Fail dst = uus Fail("Sihtkoht/Kopeeri-fail-3.txt");
    FileInputStream inStream = uus FileInputStream (src);
    FileOutputStream outStream = uus FileOutputStream (dst);
  4. Faili sihtkohta kopeerimiseks kasutage FileChannel klassi meetodit TransferTo.
    proovige {
    Failikanal inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } püüda (Erand e) {
    System.out.println("Faili ei saanud sihtkohta kopeerida: " + dst.getPath() + ". Kontrollima kui kaust või fail on juba olemas.");
    } lõpuks {
    // Sule vood
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Fail kopeeritud");
  5. Käivitage skript Java- ja Java-käskude abil.
  6. Kopeeritud faili vaatamiseks liikuge oma kausta "Sihtkoht".

Failide kopeerimine Javas on alles algus

Java-failide kopeerimiseks on palju võimalusi. Kolm võimalikku viisi hõlmavad traditsioonilise voomeetodi, Files.copy meetodi või transferTo meetodi kasutamist.

Java abil saate teha palju muid failihalduri toiminguid. Mõned neist hõlmavad failide teisaldamist, failide kustutamist või failide pakkimist. Need võivad olla kasulikud õppimiseks, kui peate failihalduris teatud protsesse automatiseerima.