Kai kuriais atvejais reikia nukopijuoti failą Java. Galbūt kuriate paprastą scenarijų, skirtą failų tvarkyklės procesams automatizuoti. Jūs netgi galite rašyti visapusišką programą, kuri veikia su failais.

Yra daug būdų, kaip galite kopijuoti failą, atsižvelgiant į reikalaujamą našumą, paprastumą ar net kokią Java versiją naudojate.

Kaip kopijuoti failus naudojant FileInputStream ir FileOutputStream

Šis metodas veikia rankiniu būdu nuskaitant kiekvieną duomenų baitą iš failo ir įrašant jį į naują paskirties vietą. Skirtingai nuo toliau pateikto Files.copy metodo, šį metodą galite naudoti visoms Java versijoms, įskaitant Java 6 ir senesnes versijas.

Ji naudoja „FileInputStream“ klasę, kad nuskaitytų baitus iš šaltinio failo, o „FileOutputStream“, kad įrašytų baitus į paskirties vietą.

  1. Sukurkite failą bet kurioje kompiuterio vietoje pavadinimu „SimpleScript.java“.
  2. Atidarykite failą teksto rengyklėje arba IDE ir nukopijuokite šį bazinį kodą į programą.
    importuoti java.io. IOException;

    klasėSimpleScript

    {
    viešasstatinistuštumapagrindinis(Styginių args[])metimai IO išimtis {
    // Čia jūsų kodas
    }
    }

  3. Importuokite šias papildomas įvesties srauto ir išvesties srauto klases failo viršuje, iškart po pirmojo importavimo teiginio.
    importuoti java.io. Failas;
    importuoti java.io. InputStream;
    importuoti java.io. OutputStream;
    importuoti java.io. FileInputStream;
    importuoti java.io. FileOutputStream;
  4. Sukurkite naują failą pavadinimu "Copy-File-1.txt" tame pačiame aplanke kaip ir SimpleScript.java failas. Pridėkite bet kokį rašytinį turinį į failą.
  5. Tame pačiame aplanke taip pat sukurkite naują katalogą pavadinimu „Paskirtis“. Tikslas yra nukopijuoti failą "Copy-File-1.txt" į naują aplanką.
  6. Pagrindinėje klasės funkcijoje naudokite klasę Failas, kad sukurtumėte du naujus failų objektus. Šaltinis, kuris bus failas, kurį norite kopijuoti, ir paskirties vieta, į kurią norite kopijuoti failą. Jei paskirties failo nėra, programa sukurs naują.
    klasėSimpleScript{ 
    viešasstatinistuštumapagrindinis(Styginių args[])metimai IO išimtis {
    // 1-as būdas kopijuoti failą
    Failo šaltinis = naujas Failas ("Kopijuoti-failas-1.txt");
    Failo paskirties vieta = naujas Failas("Paskirtis/Kopijuoti-failas-1.txt");
    }
    }
  7. Po to sukurkite InputStream ir OutputStream objektus.
    InputStream įvestis = nulinis;
    OutputStream išvestis = nulinis;
  8. Naudokite įvesties srautą duomenims baitais skaityti, o išvesties srautą duomenims įrašyti į naują vietą.
    bandyti {
    // Sukurkite FileInputStream ir FileOutputStream objektus
    įvestis = naujas FileInputStream (šaltinis);
    išvestis = naujas FileOutputStream (paskirties vieta);
    baitas[] buf = naujasbaitas[1024];
    tarpt baitai Skaityti;

    // Įrašykite baitus į paskirties vietą
    kol ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, baitai Skaityti);
    }
    } sugauti (IO išimtis e) {
    e.printStackTrace();
    System.out.println("Nepavyko nukopijuoti failo į paskirties vietą: " + destination.getPath() + ". Patikrinti jeigu aplankas arba failas jau yra.");
    } pagaliau {
    // Uždarykite srautus
    jeigu (įvestis != nulinis) {
    input.close();
    }

    jeigu (išvestis != nulinis) {
    output.close();
    }
    }

    System.out.println("Failas nukopijuotas");

  9. Norėdami paleisti scenarijų, atidarykite komandų eilutę. Eikite į aplanką, kuriame išsaugojote „Java“ failą, naudodami komandą cd „Windows“ komandų eilutė arba „Mac“ terminalas.
    cd Darbalaukis
  10. Norėdami sudaryti scenarijų, išsaugokite „Java“ failą ir paleiskite Javac komandą komandų eilutėje:
    javac SimpleScript.java
  11. Norėdami paleisti scenarijų, naudokite Java komanda:
    java SimpleScript
    Turėtumėte matyti vieną išvesties eilutę be klaidų:
  12. Eikite į aplanką „Paskirties vieta“, kad peržiūrėtumėte nukopijuotą failą.
  13. Atidarykite failą, kad peržiūrėtumėte turinį, kurį jūsų programa nukopijavo iš pradinio failo.

Kaip kopijuoti failus naudojant Files.copy

Jei naudojate Java 7 ar naujesnę versiją, galite naudoti Files.copy metodą. Šis metodas paprastai yra paprastesnis įgyvendinimas. Pagal Java dokumentacija, yra kelios funkcijos perkrovos.

Pavyzdžiui, failų kopijavimo metodas taip pat gali naudoti įvesties srautą failams kopijuoti iš vienos vietos į kitą, tačiau naudojant metodą naudojant mažiau kodo. Taip pat galite naudoti kelius arba patys nurodyti, kaip norite kopijuoti failą.

  1. Sukurkite naują failą pavadinimu „Copy-File-2.txt“ tame pačiame aplanke kaip ir SimpleScript.java failas. Pridėkite bet kokį rašytinį turinį į failą.
  2. Failo viršuje pridėkite „java.nio.file. Paths“ ir „java.nio.file. Failai“ klases.
    importuoti java.nio.failas. Takai;
    importuoti java.nio.failas. Failai;
  3. Pridėkite dvi eilutes, nurodančias santykinį šaltinio failo kelią ir paskirties vietą. Naudokite Files.copy metodą, kuris jau tvarkys failo kopijavimo į paskirties vietą logiką.
    String copySource = "Kopijuoti failą-2.txt";
    String copyDestination = "Paskirties vieta/kopijuoti failą-2.txt";

    bandyti {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } sugauti (e išimtis) {
    System.out.println("Nepavyko nukopijuoti failo į paskirties vietą: " + copyDestination + ". Patikrinti jeigu aplankas arba failas jau yra.");
    }
    System.out.println("2nd Failas nukopijuotas");

  4. Paleiskite scenarijų naudodami Javac ir Java komandas.
  5. Eikite į aplanką „Paskirties vieta“, kad peržiūrėtumėte nukopijuotą failą.

Kaip kopijuoti failus naudojant FileChannel.transferTo()

Pagal Java dokumentacija, šis metodas gali būti potencialiai greitesnis failų kopijavimo būdas. Tačiau tai priklausys nuo to, kaip įgyvendinsite funkciją.

  1. Sukurkite naują failą pavadinimu "Copy-File-3.txt" tame pačiame aplanke kaip ir SimpleScript.java failas. Pridėkite šio failo turinio pavyzdį.
  2. SimpleScript.java viršuje importuokite „java.nio.channels. „FileChannel“ klasė kartu su trimis ankstesnėmis su failais susijusiomis klasėmis iš „io“ paketo.
    importuoti java.io. Failas;
    importuoti java.io. FileInputStream;
    importuoti java.io. FileOutputStream;
    importuoti java.nio.channels. Failų kanalas;
  3. Sukurkite šaltinio ir paskirties failų objektus ir naudokite juos kurdami įvesties srautą ir išvesties srautą.
    Failas src = naujas Failas ("Kopijuoti-failas-3.txt");
    Failas dst = naujas Failas("Paskirtis/Kopijuoti-failas-3.txt");
    FileInputStream inStream = naujas FileInputStream (src);
    FileOutputStream outStream = naujas FileOutputStream (dst);
  4. Norėdami nukopijuoti failą į paskirties vietą, naudokite „FileChannel“ klasės metodą „TransferTo“.
    bandyti {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } sugauti (e išimtis) {
    System.out.println("Nepavyko nukopijuoti failo į paskirties vietą: " + dst.getPath() + ". Patikrinti jeigu aplankas arba failas jau yra.");
    } pagaliau {
    // Uždarykite srautus
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Failas nukopijuotas");
  5. Paleiskite scenarijų naudodami Javac ir Java komandas.
  6. Eikite į aplanką „Paskirties vieta“, kad peržiūrėtumėte nukopijuotą failą.

Failų kopijavimas „Java“ yra tik pradžia

Yra daug būdų, kaip nukopijuoti failą Java. Trys galimi būdai apima tradicinio srauto metodo, Files.copy metodo arba transferTo metodo naudojimą.

Yra daug kitų failų tvarkyklės operacijų, kurias galite atlikti naudodami „Java“. Kai kurie iš jų apima failų perkėlimą, failų ištrynimą arba failų suglaudinimą. Tai gali būti naudinga norint išmokti, jei reikia automatizuoti tam tikrus procesus failų tvarkyklėje.