Rešeno: Java kako kopirati fajl

Posljednje ažuriranje: 06/19/2023

kako kopirati fajl Prijenos datoteka je uobičajen zadatak s kojim se susreću i programeri i korisnici računara. To može izgledati kao jednostavan zadatak, ali postoje različita razmatranja koja treba imati na umu, kao što je osiguranje integriteta datoteke, rukovanje mogućim izuzecima i odabir prave biblioteke ili metode za vaše specifične potrebe. U ovom članku ćemo se fokusirati na to kako kopirati datoteke koristeći Javu, zaronivši duboko u postupno objašnjenje koda, biblioteka i uključenih funkcija.

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.

Slični postovi: