Dažos gadījumos fails ir jākopē Java. Iespējams, veidojat vienkāršu skriptu, lai automatizētu failu pārvaldnieka procesus. Jūs pat varētu rakstīt pilnvērtīgu lietojumprogrammu, kas darbojas ar failiem.

Ir daudz veidu, kā kopēt failu atkarībā no nepieciešamās veiktspējas, vienkāršības vai pat izmantotās Java versijas.

Kā kopēt failus, izmantojot FileInputStream un FileOutputStream

Šī metode darbojas, manuāli nolasot katru datu baitu no faila un ierakstot to uz jaunu galamērķi. Atšķirībā no tālāk norādītās Files.copy metodes, varat izmantot šo metodi visām Java versijām, tostarp Java 6 un jaunākām versijām.

Tas izmanto FileInputStream klasi, lai nolasītu baitus no avota faila, un FileOutputStream, lai baitus ierakstītu galamērķī.

  1. Izveidojiet failu jebkur savā datorā ar nosaukumu "SimpleScript.java".
  2. Atveriet failu teksta redaktorā vai IDE un kopējiet tālāk norādīto bāzes kodu lietojumprogrammā.
    imports java.io. IOIzņēmums;

    klasēSimpleScript{
    publiskistatisksnederīgsgalvenais(stīgu args[])metieni IOIzņēmums {
    // Tavs kods šeit
    }
    }

  3. Importējiet šīs papildu ievades straumes un izvades straumes klases faila augšdaļā tūlīt pēc pirmā importēšanas priekšraksta.
    imports java.io. Fails;
    imports java.io. InputStream;
    imports java.io. OutputStream;
    imports java.io. FileInputStream;
    imports java.io. FileOutputStream;
  4. Izveidojiet jaunu failu ar nosaukumu "Copy-File-1.txt" tajā pašā mapē, kurā atrodas SimpleScript.java fails. Pievienojiet failā jebkādu rakstītu saturu.
  5. Tajā pašā mapē izveidojiet arī jaunu direktoriju ar nosaukumu "Galamērķis". Mērķis ir kopēt failu "Copy-File-1.txt" jaunajā mapē.
  6. Klases galvenajā funkcijā izmantojiet klasi Fails, lai izveidotu divus jaunus faila objektus. Avots, kas būs fails, kuru vēlaties kopēt, un galamērķis, kas būs vieta, kur vēlaties kopēt failu. Ja mērķa fails nepastāv, programma izveidos jaunu.
    klasēSimpleScript{ 
    publiskistatisksnederīgsgalvenais(stīgu args[])metieni IOIzņēmums {
    // 1. veids, kā kopēt failu
    Faila avots = jauns Fails ("Kopēt-fails-1.txt");
    Faila galamērķis = jauns Fails("Galamērķis/Kopēt-fails-1.txt");
    }
    }
  7. Pēc tam izveidojiet InputStream un OutputStream objektu.
    InputStream ievade = null;
    OutputStream izvade = null;
  8. Izmantojiet ievades straumi, lai nolasītu datus baitos, un izvades straumi, lai rakstītu datus jaunajā atrašanās vietā.
    mēģināt {
    // Izveidojiet FileInputStream un FileOutputStream objektus
    ievade = jauns FileInputStream (avots);
    izvade = jauns FileOutputStream (galamērķis);
    baits[] buf = jaunsbaits[1024];
    starpt baiti Lasīt;

    // Ierakstiet baitus galamērķim
    kamēr ((baitiRead = input.read (buf)) > 0) {
    output.write (buf, 0, baiti Lasīt);
    }
    } noķert (IO izņēmums e) {
    e.printStackTrace();
    System.out.println("Nevarēja kopēt failu uz galamērķi: " + destination.getPath() + ". Pārbaudiet ja mape vai fails jau pastāv.");
    } beidzot {
    // Aizveriet straumes
    ja (ievade != null) {
    input.close();
    }

    ja (izeja != null) {
    output.close();
    }
    }

    System.out.println("Fails nokopēts");

  9. Lai palaistu skriptu, atveriet komandrindu. Pārejiet uz mapi, kurā saglabājāt savu Java failu, izmantojot komandu cd uz Windows komandu uzvedne vai Mac terminālis.
    cd Darbvirsma
  10. Lai kompilētu skriptu, saglabājiet Java failu un palaidiet Javac komanda komandrindā:
    javac SimpleScript.java
  11. Lai palaistu skriptu, izmantojiet Java komanda:
    java SimpleScript
    Jums vajadzētu redzēt vienu izvades rindiņu bez kļūdām:
  12. Pārejiet uz mapi "Galamērķis", lai skatītu kopēto failu.
  13. Atveriet failu, lai skatītu saturu, ko jūsu programma nokopēja no sākotnējā faila.

Kā kopēt failus, izmantojot Files.copy

Ja izmantojat Java 7 vai jaunāku versiju, varat izmantot Files.copy metodi. Šī metode parasti ir vienkāršāka īstenošana. Saskaņā ar Java dokumentācija, funkcijai ir vairākas pārslodzes.

Piemēram, metode Files.copy var izmantot arī ievades straumi, lai kopētu failus no vienas vietas uz citu, taču izmantojot metodi, kurā tiek izmantots mazāk koda. Varat arī izmantot ceļus vai pats norādīt, kā vēlaties, lai metode kopētu failu.

  1. Izveidojiet jaunu failu ar nosaukumu "Copy-File-2.txt" tajā pašā mapē, kurā atrodas SimpleScript.java fails. Pievienojiet failā jebkādu rakstītu saturu.
  2. Faila augšdaļā pievienojiet importēšanu failam "java.nio.file. Ceļi" un "java.nio.file. Faili" klases.
    imports java.nio.fails. Ceļi;
    imports java.nio.fails. Faili;
  3. Pievienojiet divas virknes, kas apzīmē avota faila un galamērķa relatīvo faila ceļu. Izmantojiet Files.copy metodi, kas jau apstrādās loģiku, lai kopētu failu uz galamērķi.
    String copySource = "Kopēt-fails-2.txt";
    String copyDestination = "Galamērķis/Kopēt-fails-2.txt";

    mēģināt {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } noķert (e izņēmums) {
    System.out.println("Nevarēja kopēt failu uz galamērķi: " + copyDestination + ". Pārbaudiet ja mape vai fails jau pastāv.");
    }
    System.out.println("2nd fails nokopēts");

  4. Palaidiet skriptu, izmantojot Javac un Java komandas.
  5. Pārejiet uz mapi "Galamērķis", lai skatītu kopēto failu.

Kā kopēt failus, izmantojot FileChannel.transferTo()

Saskaņā ar Java dokumentācija, šī metode var būt potenciāli ātrāks failu kopēšanas veids. Tomēr tas būs atkarīgs no funkcijas ieviešanas veida.

  1. Izveidojiet jaunu failu ar nosaukumu "Copy-File-3.txt" tajā pašā mapē, kurā atrodas SimpleScript.java fails. Pievienojiet šim failam satura paraugu.
  2. SimpleScript.java augšpusē importējiet failu "java.nio.channels. FileChannel" klase kopā ar trim iepriekšējām izplatītākajām ar failiem saistītajām klasēm no io pakotnes.
    imports java.io. Fails;
    imports java.io. FileInputStream;
    imports java.io. FileOutputStream;
    imports java.nio.channels. FileChannel;
  3. Izveidojiet faila objektus avotam un galamērķim un izmantojiet tos, lai izveidotu ievades straumi un izvades straumi.
    Fails src = jauns Fails ("Kopēt-fails-3.txt");
    Fails dst = jauns Fails("Galamērķis/Kopēt-fails-3.txt");
    FileInputStream inStream = jauns FileInputStream (src);
    FileOutputStream outStream = jauns FileOutputStream (dst);
  4. Izmantojiet FileChannel klases metodi TransferTo, lai kopētu failu uz tā galamērķi.
    mēģināt {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } noķert (e izņēmums) {
    System.out.println("Nevarēja kopēt failu uz galamērķi: " + dst.getPath() + ". Pārbaudiet ja mape vai fails jau pastāv.");
    } beidzot {
    // Aizveriet straumes
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Fails nokopēts");
  5. Palaidiet skriptu, izmantojot Javac un Java komandas.
  6. Pārejiet uz mapi "Galamērķis", lai skatītu kopēto failu.

Failu kopēšana Java ir tikai sākums

Ir daudz veidu, kā kopēt failu Java. Trīs iespējamie veidi ietver tradicionālās straumēšanas metodes, Files.copy metodes vai transferTo metodes izmantošanu.

Ir daudzas citas failu pārvaldnieka darbības, kuras varat veikt, izmantojot Java. Daži no tiem ietver failu pārvietošanu, failu dzēšanu vai failu saspiešanu. Tie var būt noderīgi, lai uzzinātu, ja nepieciešams automatizēt noteiktus procesus failu pārvaldniekā.