Nekoliko scenarija zahtijeva kopiranje datoteke u Javi. Možda stvarate jednostavnu skriptu za automatizaciju procesa za upravitelj datoteka. Mogli biste čak i pisati potpuno razvijenu aplikaciju koja radi s datotekama.
Postoji mnogo načina na koje možete kopirati datoteku, ovisno o vašoj potrebnoj izvedbi, jednostavnosti ili čak o tome koju verziju Jave koristite.
Kako kopirati datoteke pomoću FileInputStream i FileOutputStream
Ova metoda funkcionira tako da ručno čita svaki bajt podataka iz datoteke i zapisuje ih na novo odredište. Za razliku od metode Files.copy u nastavku, ovu metodu možete koristiti za sve verzije Jave, uključujući Javu 6 i starije.
Koristi klasu FileInputStream za čitanje bajtova iz izvorne datoteke i FileOutputStream za pisanje bajtova na odredište.
- Stvorite datoteku bilo gdje na računalu pod nazivom "SimpleScript.java".
- Otvorite datoteku u uređivaču teksta ili IDE-u i kopirajte sljedeći osnovni kod u aplikaciju.
uvoz java.io. IOException;
razredaSimpleScript{
javnoststatičkiponištitiglavni(String args[])bacanja IOException {
// Vaš kod ovdje
}
} - Uvezite ove dodatne klase ulaznog toka i izlaznog toka na vrhu datoteke, odmah nakon prve izjave uvoza.
uvoz java.io. Datoteka;
uvoz java.io. InputStream;
uvoz java.io. OutputStream;
uvoz java.io. FileInputStream;
uvoz java.io. FileOutputStream; - Napravite novu datoteku pod nazivom "Copy-File-1.txt", u istoj mapi u kojoj je vaša datoteka SimpleScript.java. Dodajte bilo koji pisani sadržaj unutar datoteke.
- U istoj mapi stvorite i novi direktorij pod nazivom "Destination". Cilj je kopirati datoteku "Copy-File-1.txt" u novu mapu.
- Unutar glavne funkcije klase, koristite klasu File za stvaranje dva nova objekta datoteke. Izvor, koji će biti datoteka koju želite kopirati, i odredište, koje će biti mjesto na koje želite kopirati datoteku. Ako odredišna datoteka ne postoji, vaš će program stvoriti novu.
razredaSimpleScript{
javnoststatičkiponištitiglavni(String args[])bacanja IOException {
// 1. način kopiranja datoteke
Izvor datoteke = novi File("Copy-File-1.txt");
Odredište datoteke = novi File("Destination/Copy-File-1.txt");
}
} - Nakon toga izradite objekt InputStream i OutputStream.
InputStream input = ništavan;
OutputStream izlaz = ništavan; - Koristite ulazni tok za čitanje podataka u bajtovima, a izlazni tok za upisivanje podataka na novo mjesto.
probati {
// Stvaranje FileInputStream i FileOutputStream objekata
unos = novi FileInputStream (izvor);
izlaz = novi FileOutputStream (odredište);
bajt[] buf = novibajt[1024];
int bytesRead;// Zapisivanje bajtova na odredište
dok ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} ulov (IOException e) {
e.printStackTrace();
System.out.println("Ne mogu kopirati datoteku na odredište: " + destination.getPath() + ". Ček ako mapa ili datoteka već postoji.");
} konačno {
// Zatvori streamove
ako (unos != ništavan) {
ulaz.zatvori();
}ako (izlaz != ništavan) {
izlaz.zatvori();
}
}System.out.println("Datoteka kopirana");
- Za pokretanje skripte otvorite naredbeni redak. Dođite do mape u koju ste pohranili svoju Java datoteku pomoću naredbe cd na Windows naredbeni redak ili Mac terminal.
CD Radna površina
- Za prevođenje skripte spremite Java datoteku i pokrenite Javac naredba u naredbenom retku:
javac SimpleScript.java
- Za pokretanje skripte koristite Java naredba:
Trebali biste vidjeti jedan redak izlaza bez pogrešaka:java SimpleScript
- Idite do svoje mape "Destination" da biste vidjeli svoju kopiranu datoteku.
- Otvorite datoteku kako biste vidjeli sadržaj koji je vaš program kopirao iz izvorne datoteke.
Kako kopirati datoteke pomoću Files.copy
Ako koristite Javu 7 ili noviju, možete koristiti metodu Files.copy. Ova metoda je općenito jednostavnija implementacija. Prema Java dokumentacija, postoji višestruko preopterećenje funkcije.
Na primjer, metoda Files.copy također može koristiti ulazni tok za kopiranje datoteka s jedne lokacije na drugu, ali putem metode koja koristi manje koda. Također možete koristiti Staze ili sami odrediti kako želite da metoda kopira vašu datoteku.
- Napravite novu datoteku pod nazivom "Copy-File-2.txt", u istoj mapi u kojoj je vaša datoteka SimpleScript.java. Dodajte bilo koji pisani sadržaj unutar datoteke.
- Na vrhu datoteke dodajte uvoze za "java.nio.file. Putovi" i "java.nio.file. Datoteke" klase.
uvoz java.nio.datoteka. Staze;
uvoz java.nio.datoteka. Datoteke; - Dodajte dva niza, koji predstavljaju relativni put datoteke za izvornu i odredišnu datoteku. Upotrijebite metodu Files.copy koja će već upravljati logikom kopiranja datoteke na odredište.
String copySource = "Copy-File-2.txt";
String copyDestination = "Destination/Copy-File-2.txt";probati {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} ulov (Iznimka e) {
System.out.println("Ne mogu kopirati datoteku na odredište: " + copyDestination + ". Ček ako mapa ili datoteka već postoji.");
}
System.out.println("2nd Datoteka kopirana"); - Pokrenite skriptu koristeći Javac i Java naredbe.
- Idite do svoje mape "Destination" da biste vidjeli svoju kopiranu datoteku.
Kako kopirati datoteke pomoću FileChannel.transferTo()
Prema Java dokumentacija, ova metoda može biti potencijalno brži način kopiranja datoteka. Međutim, to će ovisiti o načinu na koji implementirate funkciju.
- Napravite novu datoteku pod nazivom "Copy-File-3.txt", u istoj mapi u kojoj je vaša datoteka SimpleScript.java. Dodajte ogledni sadržaj ovoj datoteci.
- Na vrhu SimpleScript.java uvezite "java.nio.channels. FileChannel" uz tri prethodne uobičajene klase povezane s datotekama iz io paketa.
uvoz java.io. Datoteka;
uvoz java.io. FileInputStream;
uvoz java.io. FileOutputStream;
uvoz java.nio.kanali. FileChannel; - Stvorite objekte datoteke za izvor i odredište i koristite ih za stvaranje ulaznog toka i izlaznog toka.
Datoteka src = novi File("Copy-File-3.txt");
Datoteka dst = novi File("Destination/Copy-File-3.txt");
FileInputStream inStream = novi FileInputStream (src);
FileOutputStream outStream = novi FileOutputStream (dst); - Upotrijebite metodu TransferTo iz klase FileChannel za kopiranje datoteke na odredište.
probati {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} ulov (Iznimka e) {
System.out.println("Ne mogu kopirati datoteku na odredište: " + dst.getPath() + ". Ček ako mapa ili datoteka već postoji.");
} konačno {
// Zatvori streamove
inStream.close();
OutStream.close();
}
System.out.println("3rd Datoteka kopirana"); - Pokrenite skriptu koristeći Javac i Java naredbe.
- Idite do svoje mape "Destination" da biste vidjeli svoju kopiranu datoteku.
Kopiranje datoteka u Javi samo je početak
Postoji mnogo načina na koje možete kopirati datoteku u Javi. Tri moguća načina uključuju korištenje tradicionalne metode toka, metode Files.copy ili metode transferTo.
Postoje mnoge druge operacije upravitelja datotekama koje možete izvesti pomoću Jave. Neki od njih uključuju premještanje datoteka, brisanje datoteka ili komprimiranje datoteka. Ovo može biti korisno ako trebate automatizirati određene procese u upravitelju datotekama.