Niekoľko scenárov vyžaduje, aby ste skopírovali súbor v jazyku Java. Možno vytvárate jednoduchý skript na automatizáciu procesov pre správcu súborov. Môžete dokonca písať plnohodnotnú aplikáciu, ktorá pracuje so súbormi.
Existuje mnoho spôsobov, ako môžete skopírovať súbor, v závislosti od požadovaného výkonu, jednoduchosti alebo dokonca verzie Java, ktorú používate.
Ako kopírovať súbory pomocou FileInputStream a FileOutputStream
Táto metóda funguje tak, že manuálne načíta každý bajt údajov zo súboru a zapíše ho do nového cieľa. Na rozdiel od metódy Files.copy uvedenej nižšie môžete túto metódu použiť pre všetky verzie Java vrátane Java 6 a starších.
Používa triedu FileInputStream na čítanie bajtov zo zdrojového súboru a triedu FileOutputStream na zapisovanie bajtov do cieľa.
- Vytvorte súbor kdekoľvek v počítači s názvom „SimpleScript.java“.
- Otvorte súbor v textovom editore alebo IDE a skopírujte nasledujúci základný kód do aplikácie.
importovať java.io. IOException;
triedaSimpleScript{
verejnostistatickéneplatnéhlavné(Reťazcové argumenty[])hádže IOException {
// Tu je váš kód
}
} - Importujte tieto ďalšie triedy vstupného prúdu a výstupného prúdu v hornej časti súboru hneď po prvom príkaze importu.
importovať java.io. Súbor;
importovať java.io. InputStream;
importovať java.io. OutputStream;
importovať java.io. FileInputStream;
importovať java.io. FileOutputStream; - Vytvorte nový súbor s názvom „Copy-File-1.txt“ v rovnakom priečinku ako váš súbor SimpleScript.java. Do súboru pridajte akýkoľvek písaný obsah.
- V tom istom priečinku vytvorte aj nový adresár s názvom „Cieľ“. Cieľom je skopírovať súbor "Copy-File-1.txt" do nového priečinka.
- V rámci hlavnej funkcie triedy použite triedu File na vytvorenie dvoch nových súborových objektov. Zdroj, ktorým bude súbor, ktorý chcete skopírovať, a cieľ, ktorý bude miestom, kam chcete súbor skopírovať. Ak cieľový súbor neexistuje, váš program vytvorí nový.
triedaSimpleScript{
verejnostistatickéneplatnéhlavné(Reťazcové argumenty[])hádže IOException {
// 1. spôsob kopírovania súboru
Zdroj súboru = Nový Súbor("Kopírovať-súbor-1.TXT");
Cieľ súboru = Nový Súbor("Cieľ/Kopírovať-súbor-1.TXT");
}
} - Potom vytvorte objekt InputStream a OutputStream.
Vstup InputStream = nulový;
Výstup OutputStream = nulový; - Použite vstupný tok na čítanie údajov v bajtoch a výstupný tok na zápis údajov do nového umiestnenia.
skúste {
// Vytvorenie objektov FileInputStream a FileOutputStream
vstup = Nový FileInputStream (zdroj);
výstup = Nový FileOutputStream (cieľ);
byte[] buf = Novýbyte[1024];
int bytesRead;// Zápis bajtov do cieľa
zatiaľ čo ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} chytiť (IOException e) {
e.printStackTrace();
System.out.println("Súbor sa nepodarilo skopírovať do cieľa: " + destination.getPath() + ". Skontrolujte ak priečinok alebo súbor už existuje.");
} konečne {
// Zatvorte prúdy
ak (vstup != nulový) {
input.close();
}ak (výstup!= nulový) {
output.close();
}
}System.out.println("Súbor bol skopírovaný");
- Ak chcete spustiť skript, otvorte príkazový riadok. Prejdite do priečinka, do ktorého ste uložili svoj súbor Java, pomocou príkazu cd na Príkazový riadok systému Windows alebo terminálu Mac.
cd Desktop
- Ak chcete skompilovať skript, uložte súbor Java a spustite súbor Javac príkaz v príkazovom riadku:
javac SimpleScript.java
- Na spustenie skriptu použite Java príkaz:
Mali by ste vidieť jeden riadok výstupu bez chýb:Java SimpleScript
- Ak chcete zobraziť skopírovaný súbor, prejdite do priečinka Cieľ.
- Otvorením súboru zobrazíte obsah, ktorý váš program skopíroval z pôvodného súboru.
Ako kopírovať súbory pomocou Files.copy
Ak používate Java 7 alebo novší, môžete použiť metódu Files.copy. Táto metóda je vo všeobecnosti jednoduchšia implementácia. Podľa Dokumentácia Java, existuje viacero preťažení funkcie.
Napríklad metóda Files.copy môže tiež použiť vstupný tok na kopírovanie súborov z jedného miesta na druhé, ale pomocou metódy využívajúcej menej kódu. Môžete tiež použiť cesty alebo sami určiť, ako chcete, aby metóda kopírovala váš súbor.
- Vytvorte nový súbor s názvom „Copy-File-2.txt“ v rovnakom priečinku ako váš súbor SimpleScript.java. Do súboru pridajte akýkoľvek písaný obsah.
- V hornej časti súboru pridajte importy pre súbor „java.nio.file. Paths“ a „java.nio.file. Triedy súborov“.
importovať java.nio.file. Cesty;
importovať java.nio.file. Súbory; - Pridajte dva reťazce, ktoré predstavujú relatívnu cestu k súboru pre zdrojový súbor a cieľ. Použite metódu Files.copy, ktorá už zvládne logiku kopírovania súboru do cieľa.
String copySource = "Kopírovať-súbor-2.TXT";
String copyDestination = "Cieľ/Kopírovať súbor-2.TXT";skúste {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} chytiť (Výnimka e) {
System.out.println("Súbor sa nepodarilo skopírovať do cieľa: " + copyDestination + ". Skontrolujte ak priečinok alebo súbor už existuje.");
}
System.out.println("2nd Súbor bol skopírovaný"); - Spustite skript pomocou príkazov Javac a Java.
- Ak chcete zobraziť skopírovaný súbor, prejdite do priečinka Cieľ.
Ako kopírovať súbory pomocou FileChannel.transferTo()
Podľa Dokumentácia Java, táto metóda môže byť potenciálne rýchlejším spôsobom kopírovania súborov. To však bude závisieť od spôsobu implementácie funkcie.
- Vytvorte nový súbor s názvom „Copy-File-3.txt“ v rovnakom priečinku ako váš súbor SimpleScript.java. Pridajte do tohto súboru nejaký vzorový obsah.
- V hornej časti stránky SimpleScript.java importujte súbor „java.nio.channels. FileChannel" popri troch z predchádzajúcich bežných tried súvisiacich so súbormi z balíka io.
importovať java.io. Súbor;
importovať java.io. FileInputStream;
importovať java.io. FileOutputStream;
importovať java.nio.channels. FileChannel; - Vytvorte súborové objekty pre zdroj a cieľ a použite ich na vytvorenie vstupného toku a výstupného toku.
Súbor src = Nový Súbor("Kopírovať-súbor-3.TXT");
Súbor dst = Nový Súbor("Cieľ/Kopírovať-súbor-3.TXT");
FileInputStream inStream = Nový FileInputStream (src);
FileOutputStream outStream = Nový FileOutputStream (dst); - Pomocou metódy TransferTo z triedy FileChannel skopírujte súbor na miesto určenia.
skúste {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} chytiť (Výnimka e) {
System.out.println("Súbor sa nepodarilo skopírovať do cieľa: " + dst.getPath() + ". Skontrolujte ak priečinok alebo súbor už existuje.");
} konečne {
// Zatvorte prúdy
inStream.close();
outStream.close();
}
System.out.println("3rd Súbor skopírovaný"); - Spustite skript pomocou príkazov Javac a Java.
- Ak chcete zobraziť skopírovaný súbor, prejdite do priečinka Cieľ.
Kopírovanie súborov v jazyku Java je len začiatok
Existuje mnoho spôsobov, ako môžete skopírovať súbor v jazyku Java. Tri možné spôsoby zahŕňajú použitie tradičnej metódy streamu, metódy Files.copy alebo metódy transferTo.
Existuje mnoho ďalších operácií správcu súborov, ktoré môžete vykonávať pomocou Java. Niektoré z nich zahŕňajú presúvanie súborov, mazanie súborov alebo komprimovanie súborov. Tieto môžu byť užitočné naučiť sa, ak potrebujete automatizovať určité procesy v správcovi súborov.