Câteva scenarii necesită să copiați un fișier în Java. Este posibil să creați un script simplu pentru a automatiza procesele pentru un manager de fișiere. Ai putea chiar să scrii o aplicație completă care funcționează cu fișiere.
Există multe moduri prin care puteți copia un fișier, în funcție de performanța dorită, de simplitate sau chiar de versiunea Java pe care o utilizați.
Cum să copiați fișiere utilizând FileInputStream și FileOutputStream
Această metodă funcționează prin citirea manuală a fiecărui octet de date din fișier și scrierea acestuia într-o nouă destinație. Spre deosebire de metoda Files.copy de mai jos, puteți utiliza această metodă pentru toate versiunile Java, inclusiv Java 6 și versiunile anterioare.
Folosește clasa FileInputStream pentru a citi octeți dintr-un fișier sursă și FileOutputStream pentru a scrie octeți la destinație.
- Creați un fișier oriunde pe computer numit „SimpleScript.java”.
- Deschideți fișierul într-un editor de text sau IDE și copiați următorul cod de bază în aplicație.
import java.io. IOException;
clasăSimpleScript{
publicstaticgolprincipal(Argumente șir[])aruncări IOException {
// Codul dvs. aici
}
} - Importați aceste clase suplimentare Input Stream și Output Stream în partea de sus a fișierului, imediat după prima instrucțiune de import.
import java.io. Fişier;
import java.io. InputStream;
import java.io. OutputStream;
import java.io. FileInputStream;
import java.io. FileOutputStream; - Creați un fișier nou numit „Copy-File-1.txt”, în același folder cu fișierul dvs. SimpleScript.java. Adăugați orice conținut scris în interiorul fișierului.
- În același folder, creați și un nou director numit „Destinație”. Scopul este să copiați fișierul „Copy-File-1.txt” în noul folder.
- În cadrul funcției principale a clasei, utilizați clasa Fișier pentru a crea două obiecte fișier noi. Sursa, care va fi fișierul pe care doriți să-l copiați, și destinația, care va fi locul în care doriți să copiați fișierul. Dacă fișierul destinație nu există, programul dvs. va crea unul nou.
clasăSimpleScript{
publicstaticgolprincipal(Argumente șir[])aruncări IOException {
// Prima modalitate de a copia un fișier
Sursa fișierului = nou Fișier ("Copiere-Fișier-1.txt");
Destinația fișierului = nou Fișier(„Destinație/Copiere-Fișier-1.txt");
}
} - După aceea, creați un obiect InputStream și OutputStream.
InputStream input = nul;
OutputStream output = nul; - Utilizați fluxul de intrare pentru a citi datele în octeți și fluxul de ieșire pentru a scrie datele în noua locație.
încerca {
// Creați obiecte FileInputStream și FileOutputStream
intrare = nou FileInputStream (sursă);
ieșire = nou FileOutputStream (destinație);
octet[] buf = nouoctet[1024];
int bytesRead;// Scrie octeți la destinație
in timp ce ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} captură (IOException e) {
e.printStackTrace();
System.out.println("Nu s-a putut copia fișierul la destinație: " + destination.getPath() + ". Verifica dacă folderul sau fișierul există deja.");
} in cele din urma {
// Închide fluxurile
dacă (intrare != nul) {
input.close();
}dacă (ieșire != nul) {
output.close();
}
}System.out.println("Fișier copiat");
- Pentru a rula scriptul, deschideți o linie de comandă. Navigați la folderul în care ați stocat fișierul Java folosind comanda cd de pe fișierul Prompt de comandă Windows sau terminalul Mac.
CD Desktop
- Pentru a compila scriptul, salvați fișierul Java și rulați Javac comandă în linia de comandă:
javac SimpleScript.java
- Pentru a rula scriptul, utilizați Java comanda:
Ar trebui să vedeți o singură linie de ieșire fără erori:Java SimpleScript
- Navigați la folderul „Destinație” pentru a vedea fișierul copiat.
- Deschideți fișierul pentru a vedea conținutul, pe care programul dvs. l-a copiat din fișierul original.
Cum să copiați fișiere folosind Files.copy
Dacă utilizați Java 7 sau o versiune ulterioară, puteți utiliza metoda Files.copy. Această metodă este în general o implementare mai simplă. In conformitate cu Documentație Java, există mai multe supraîncărcări pentru funcție.
De exemplu, metoda Files.copy poate folosi și un flux de intrare pentru a copia fișiere dintr-o locație în alta, dar printr-o metodă care utilizează mai puțin cod. De asemenea, puteți utiliza Căile sau vă specificați cum doriți ca metoda să vă copieze fișierul.
- Creați un fișier nou numit „Copy-File-2.txt”, în același folder cu fișierul dvs. SimpleScript.java. Adăugați orice conținut scris în interiorul fișierului.
- În partea de sus a fișierului, adăugați importuri pentru „java.nio.file. Căi” și „java.nio.file. clase de fișiere.
import java.nio.file. poteci;
import java.nio.file. Dosare; - Adăugați două șiruri de caractere, reprezentând calea relativă a fișierului pentru fișierul sursă și destinație. Utilizați metoda Files.copy, care se va ocupa deja de logica de a copia fișierul la destinație.
String copySource = "Copy-File-2.txt";
String copyDestination = "Destinație/Copiere-Fișier-2.txt";încerca {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} captură (Excepție e) {
System.out.println("Nu s-a putut copia fișierul la destinație: " + copyDestination + ". Verifica dacă folderul sau fișierul există deja.");
}
System.out.println("2nd Fișier copiat"); - Rulați scriptul folosind comenzile Javac și Java.
- Navigați la folderul „Destinație” pentru a vedea fișierul copiat.
Cum să copiați fișiere folosind FileChannel.transferTo()
In conformitate cu Documentație Java, această metodă poate fi o modalitate potențial mai rapidă de a copia fișiere. Totuși, acest lucru va depinde de modul în care implementați funcția.
- Creați un fișier nou numit „Copy-File-3.txt”, în același folder cu fișierul dvs. SimpleScript.java. Adăugați un exemplu de conținut la acest fișier.
- În partea de sus a fișierului SimpleScript.java, importați „java.nio.channels. FileChannel" alături de trei dintre clasele comune anterioare legate de fișiere din pachetul io.
import java.io. Fişier;
import java.io. FileInputStream;
import java.io. FileOutputStream;
import java.nio.channels. FileChannel; - Creați obiecte fișier pentru sursă și destinație și utilizați-le pentru a crea un flux de intrare și un flux de ieșire.
Fișier src = nou Fișier ("Copiere-Fișier-3.txt");
Fișier dst = nou Fișier(„Destinație/Copiere-Fișier-3.txt");
FileInputStream inStream = nou FileInputStream (src);
FileOutputStream outStream = nou FileOutputStream (dst); - Utilizați metoda TransferTo din clasa FileChannel pentru a copia fișierul la destinație.
încerca {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} captură (Excepție e) {
System.out.println("Nu s-a putut copia fișierul la destinație: " + dst.getPath() + ". Verifica dacă folderul sau fișierul există deja.");
} in cele din urma {
// Închide fluxurile
inStream.close();
outStream.close();
}
System.out.println("3rd Fișier copiat"); - Rulați scriptul folosind comenzile Javac și Java.
- Navigați la folderul „Destinație” pentru a vedea fișierul copiat.
Copierea fișierelor în Java este doar începutul
Există multe moduri prin care puteți copia un fișier în Java. Trei modalități posibile includ utilizarea metodei tradiționale de flux, a metodei Files.copy sau a metodei transferTo.
Există multe alte operațiuni de gestionare de fișiere pe care le puteți efectua folosind Java. Unele dintre acestea includ mutarea fișierelor, ștergerea fișierelor sau arhivarea fișierelor. Acestea pot fi utile pentru a afla dacă trebuie să automatizați anumite procese în managerul de fișiere.