Nekaj scenarijev zahteva kopiranje datoteke v Javi. Morda ustvarjate preprost skript za avtomatizacijo procesov za upravitelja datotek. Lahko celo pišete popolno aplikacijo, ki deluje z datotekami.
Datoteko lahko kopirate na veliko načinov, odvisno od zahtevane zmogljivosti, preprostosti ali celo različice Jave, ki jo uporabljate.
Kako kopirati datoteke z uporabo FileInputStream in FileOutputStream
Ta metoda deluje tako, da ročno prebere vsak bajt podatkov iz datoteke in jih zapiše na nov cilj. Za razliko od spodnje metode Files.copy lahko to metodo uporabite za vse različice Jave, vključno z Javo 6 in starejšimi.
Uporablja razred FileInputStream za branje bajtov iz izvorne datoteke in FileOutputStream za pisanje bajtov v cilj.
- Ustvarite datoteko kjer koli v računalniku z imenom "SimpleScript.java".
- Odprite datoteko v urejevalniku besedil ali IDE in kopirajte naslednjo osnovno kodo v aplikacijo.
uvoz java.io. IOException;
razredSimpleScript{
javnostistatičnaprazninaglavni(Argumenti niza [])vrže IOException {
// Vaša koda tukaj
}
} - Uvozite te dodatne razrede vhodnega toka in izhodnega toka na vrhu datoteke, takoj za prvim stavkom uvoza.
uvoz java.io. Mapa;
uvoz java.io. InputStream;
uvoz java.io. OutputStream;
uvoz java.io. FileInputStream;
uvoz java.io. FileOutputStream; - Ustvarite novo datoteko z imenom "Copy-File-1.txt" v isti mapi kot vaša datoteka SimpleScript.java. V datoteko dodajte poljubno pisno vsebino.
- V isti mapi ustvarite tudi nov imenik z imenom »Cilj«. Cilj je kopirati datoteko "Copy-File-1.txt" v novo mapo.
- Znotraj glavne funkcije razreda uporabite razred Datoteka, da ustvarite dva nova datotečna predmeta. Vir, ki bo datoteka, ki jo želite kopirati, in cilj, kamor želite kopirati datoteko. Če ciljna datoteka ne obstaja, bo vaš program ustvaril novo.
razredSimpleScript{
javnostistatičnaprazninaglavni(Argumenti niza [])vrže IOException {
// 1. način kopiranja datoteke
Vir datoteke = novo File("Copy-File-1.txt");
Cilj datoteke = novo File("Destination/Copy-File-1.txt");
}
} - Po tem ustvarite objekt InputStream in OutputStream.
InputStream input = nič;
Izhod OutputStream = nič; - Uporabite vhodni tok za branje podatkov v bajtih in izhodni tok za pisanje podatkov na novo lokacijo.
poskusi {
// Ustvari objekte FileInputStream in FileOutputStream
vnos = novo FileInputStream (vir);
izhod = novo FileOutputStream (cilj);
bajt[] buf = novobajt[1024];
int bytesRead;// Pisanje bajtov na cilj
medtem ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} ulov (IOException e) {
e.printStackTrace();
System.out.println("Ni bilo mogoče kopirati datoteke na cilj: " + destination.getPath() + ". Preverite če mapa ali datoteka že obstaja.");
} končno {
// Zapri tokove
če (vnos != nič) {
input.close();
}če (izhod != nič) {
izhod.zapri();
}
}System.out.println("Datoteka je kopirana");
- Če želite zagnati skript, odprite ukazno vrstico. Pomaknite se do mape, v katero ste shranili datoteko Java z ukazom cd na Windows ukazni poziv oz Mac Terminal.
cd Namizje
- Če želite prevesti skript, shranite datoteko Java in zaženite Javac ukaz v ukazni vrstici:
javac SimpleScript.java
- Če želite zagnati skript, uporabite Java ukaz:
Videti bi morali eno vrstico izpisa brez napak:java SimpleScript
- Pomaknite se do mape »Cilj«, da si ogledate kopirano datoteko.
- Odprite datoteko in si oglejte vsebino, ki jo je vaš program kopiral iz izvirne datoteke.
Kako kopirati datoteke z uporabo Files.copy
Če uporabljate Javo 7 ali novejšo različico, lahko uporabite metodo Files.copy. Ta metoda je na splošno enostavnejša izvedba. Glede na Java dokumentacija, obstaja več preobremenitev za funkcijo.
Na primer, metoda Files.copy lahko uporablja tudi vhodni tok za kopiranje datotek z ene lokacije na drugo, vendar prek metode, ki uporablja manj kode. Uporabite lahko tudi poti ali sami določite, kako želite, da metoda kopira vašo datoteko.
- Ustvarite novo datoteko z imenom "Copy-File-2.txt" v isti mapi kot vaša datoteka SimpleScript.java. V datoteko dodajte poljubno pisno vsebino.
- Na vrhu datoteke dodajte uvoze za »java.nio.file. Poti" in "java.nio.file. Datoteke".
uvoz java.nio.file. Poti;
uvoz java.nio.file. datoteke; - Dodajte dva niza, ki predstavljata relativno pot do datoteke za izvorno in ciljno datoteko. Uporabite metodo Files.copy, ki bo že obravnavala logiko kopiranja datoteke na cilj.
String copySource = "Copy-File-2.txt";
String copyDestination = "Destination/Copy-File-2.txt";poskusi {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} ulov (Izjema e) {
System.out.println("Ni bilo mogoče kopirati datoteke na cilj: " + copyDestination + ". Preverite če mapa ali datoteka že obstaja.");
}
System.out.println("2nd datoteka kopirana"); - Zaženite skript z ukazoma Javac in Java.
- Pomaknite se do mape »Cilj«, da si ogledate kopirano datoteko.
Kako kopirati datoteke z uporabo FileChannel.transferTo()
Glede na Java dokumentacija, je ta metoda lahko potencialno hitrejši način kopiranja datotek. Vendar bo to odvisno od načina izvajanja funkcije.
- Ustvarite novo datoteko z imenom "Copy-File-3.txt" v isti mapi kot vaša datoteka SimpleScript.java. V to datoteko dodajte nekaj vzorčne vsebine.
- Na vrhu SimpleScript.java uvozite »java.nio.channels. FileChannel" skupaj s tremi prejšnjimi običajnimi razredi, povezanimi z datotekami, iz paketa io.
uvoz java.io. Mapa;
uvoz java.io. FileInputStream;
uvoz java.io. FileOutputStream;
uvoz java.nio.channels. FileChannel; - Ustvarite datotečne objekte za vir in cilj ter ju uporabite za ustvarjanje vhodnega toka in izhodnega toka.
Datoteka src = novo File("Copy-File-3.txt");
Datoteka dst = novo File("Destination/Copy-File-3.txt");
FileInputStream inStream = novo FileInputStream (src);
FileOutputStream outStream = novo FileOutputStream (dst); - Za kopiranje datoteke na cilj uporabite metodo TransferTo iz razreda FileChannel.
poskusi {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} ulov (Izjema e) {
System.out.println("Datoteke ni bilo mogoče kopirati na cilj: " + dst.getPath() + ". Preverite če mapa ali datoteka že obstaja.");
} končno {
// Zapri tokove
inStream.close();
outStream.close();
}
System.out.println("3rd Datoteka kopirana"); - Zaženite skript z ukazoma Javac in Java.
- Pomaknite se do mape »Cilj«, da si ogledate kopirano datoteko.
Kopiranje datotek v Javi je šele začetek
Obstaja veliko načinov, kako lahko kopirate datoteko v Javi. Trije možni načini vključujejo uporabo tradicionalne metode toka, metode Files.copy ali metode transferTo.
Obstaja veliko drugih operacij upravitelja datotek, ki jih lahko izvedete z Javo. Nekatere od teh vključujejo premikanje datotek, brisanje datotek ali stiskanje datotek. Te so lahko koristne za učenje, če morate avtomatizirati določene procese v upravitelju datotek.