Javine I/O biblioteke za kopiranje datoteka
Java standardna biblioteka pruลพa nam viลกe opcija za efikasno kopiranje datoteka. U ovom kontekstu ฤemo raspravljati o dvije glavne biblioteke: java.nio i java.io.
Biblioteka java.nio je dio novih I/O API-ja predstavljenih u Javi 1.4. Od tada je postao preferirani izbor za mnoge programere jer nudi I/O operacije visokih performansi bez blokiranja, poboljลกan pristup sistemu datoteka i ลกtedljiviji naฤin rada sa datotekama. Specifiฤne klase sa kojima ฤemo raditi su java.nio.file.Files i java.nio.file.Path.
java.io biblioteka, s druge strane, dio je Jave od njenog nastanka. Iako njegove I/O operacije imaju tendenciju da budu manje uฤinkovite od onih u nio paketu, on ostaje valjana opcija kada se radi s datotekama. Za ovaj vodiฤ fokusirat ฤemo se na koriลกtenje klasa InputStreamReader, OutputStreamWriter, BufferedReader i BufferedWriter.
Rjeลกenje za kopiranje datoteka u Javi
Da bismo demonstrirali jednostavno rjeลกenje za kopiranje datoteka u Javi, koristit ฤemo biblioteku java.nio.
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FileCopy { public static void main(String[] args) throws IOException { Path source = Paths.get("source.txt"); Path destination = Paths.get("destination.txt"); Files.copy(source, destination); } }
U ovom uzorku koda prvo uvozimo potrebne klase iz paketa java.nio. Zatim kreiramo objekt Putanja i za izvorne i za odrediลกne โโdatoteke. Stvarno kopiranje fajla se izvrลกava metodom Files.copy(). Poziv metode uzima izvorne i odrediลกne โโobjekte Putanja kao argumente i upravlja operacijom kopiranja.
Korak po korak objaลกnjenje koda
1. Uvezite potrebne klase: Kao prvi korak, uvozimo potrebne klase iz java.nio biblioteke (fajlovi, putanje i putanja).
2. Navedite izvorne i odrediลกne โโdatoteke: Koristeฤi metodu Paths.get(), kreiramo Path objekte koji predstavljaju naลกe izvorne i odrediลกne โโdatoteke. Ovi objekti sluลพe kao referentne taฤke za proces kopiranja datoteke.
3. Izvrลกite operaciju kopiranja datoteke: Pozivamo Files.copy() metodu da izvrลกimo stvarno kopiranje datoteke. Ova metoda uzima dva objekta Path kao argumente, koji predstavljaju izvorne i odrediลกne โโdatoteke. Podaci iz izvorne datoteke se zatim prenose u odrediลกnu datoteku.
Rukovanje izuzecima i prepisivanje
Meฤutim, kod koji smo prikazali je priliฤno jednostavan i moลพda neฤe biti dovoljan u stvarnom svijetu bez dodatne konfiguracije. Na primjer, metoda Files.copy() moลพe baciti FileAlreadyExistsException ako odrediลกna datoteka veฤ postoji. Da bismo izbjegli takve probleme, moลพemo koristiti klasu java.nio.file.StandardCopyOption. Ova klasa pruลพa enume poput REPLACE_EXISTING ili COPY_ATTRIBUTES koji nam daju bolju kontrolu nad operacijom kopiranja.
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; public class FileCopy { public static void main(String[] args) throws IOException { Path source = Paths.get("source.txt"); Path destination = Paths.get("destination.txt"); Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING); } }
Dodavanjem enuma StandardCopyOption.REPLACE_EXISTING u naลก poziv metode Files.copy(), osiguravamo da ฤe postojeฤa odrediลกna datoteka, ako postoji, biti prepisana. Ovo spreฤava izbacivanje izuzetka FileAlreadyExistsException.
U zakljuฤku, Javine standardne biblioteke olakลกavaju kopiranje datoteka, rukovanje izuzecima i kontrolu ponaลกanja operacija datoteka. Bilo da odaberete da koristite java.nio ili java.io biblioteku, obje imaju svoje prednosti i primjenu u razliฤitim scenarijima.