Java-ում ֆայլերը պատճենելու տարբեր եղանակներ
Փորձեք Java-ում ֆայլը պատճենելու այս մոտեցումներից մեկը, բայց համոզվեք, որ հասկանաք, թե որն է լավագույնը ձեր կարիքների համար:
Մի քանի սցենարներ պահանջում են, որ դուք պատճենեք ֆայլը Java-ում: Դուք կարող եք ստեղծել մի պարզ սցենար՝ ֆայլերի կառավարչի համար գործընթացները ավտոմատացնելու համար: Դուք նույնիսկ կարող եք գրել ամբողջական ծրագիր, որն աշխատում է ֆայլերի հետ:
Կան բազմաթիվ եղանակներ, որոնցով կարող եք պատճենել ֆայլը՝ կախված ձեր պահանջվող կատարողականությունից, պարզությունից կամ նույնիսկ Java-ի որ տարբերակից եք օգտագործում:
Ինչպես պատճենել ֆայլերը՝ օգտագործելով FileInputStream և FileOutputStream
Այս մեթոդն աշխատում է ֆայլից յուրաքանչյուր բայթ տվյալների ձեռքով կարդալով և այն նոր նպատակակետ գրելով: Ի տարբերություն ստորև ներկայացված Files.copy մեթոդի, դուք կարող եք օգտագործել այս մեթոդը Java-ի բոլոր տարբերակների համար, ներառյալ Java 6 և ավելի վաղ:
Այն օգտագործում է FileInputStream դասը՝ սկզբնաղբյուր ֆայլից բայթ կարդալու համար, իսկ FileOutputStream՝ նպատակակետին բայթ գրելու համար։
- Ստեղծեք ֆայլ ձեր համակարգչի ցանկացած վայրում, որը կոչվում է «SimpleScript.java»:
-
Բացեք ֆայլը տեքստային խմբագրիչում կամ IDE-ում և պատճենեք հետևյալ հիմնական կոդը հավելվածում:
import java.io.IOException; class SimpleScript { public static void main(String args[]) throws IOException { // Your code here } }
Ներմուծեք այս լրացուցիչ Input Stream և Output Stream դասերը ֆայլի վերևում՝ առաջին ներմուծման հայտարարությունից անմիջապես հետո:
import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.io.FileInputStream; import java.io.FileOutputStream;
- Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-1.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Ավելացնել ցանկացած գրավոր բովանդակություն ֆայլի ներսում:
- Նույն թղթապանակում ստեղծեք նաև նոր գրացուցակ, որը կոչվում է «Destination»: Նպատակն է պատճենել «Copy-File-1.txt» ֆայլը նոր թղթապանակում:
Դասի հիմնական ֆունկցիայի ներսում օգտագործեք File դասը՝ երկու նոր ֆայլի օբյեկտ ստեղծելու համար։ Աղբյուրը, որը կլինի այն ֆայլը, որը ցանկանում եք պատճենել, և նպատակակետը, որտեղ դուք ցանկանում եք պատճենել ֆայլը: Եթե նպատակակետ ֆայլը գոյություն չունի, ձեր ծրագիրը կստեղծի նորը:
class SimpleScript { public static void main(String args[]) throws IOException { // 1st way to copy a file File source = new File("Copy-File-1.txt"); File destination = new File("Destination/Copy-File-1.txt"); } }
Դրանից հետո ստեղծեք InputStream և OutputStream օբյեկտ:
InputStream input = null; OutputStream output = null;
Օգտագործեք մուտքային հոսքը՝ տվյալները բայթերով կարդալու համար, իսկ ելքային հոսքը՝ տվյալները նոր վայրում գրելու համար:
try { // Create FileInputStream and FileOutputStream objects input = new FileInputStream(source); output = new FileOutputStream(destination); byte[] buf = new byte[1024]; int bytesRead; // Write bytes to the destination while ((bytesRead = input.read(buf)) > 0) { output.write(buf, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); System.out.println("Could not copy the file to the destination: " + destination.getPath() + ". Check if the folder or file already exists."); } finally { // Close the streams if (input != null) { input.close(); } if (output != null) { output.close(); } } System.out.println("File copied");
Սցենարը գործարկելու համար բացեք հրամանի տող: Նավարկեք դեպի այն թղթապանակը, որտեղ դուք պահել եք ձեր Java ֆայլը, օգտագործելով cd հրամանը Windows Command Prompt-ում կամ Mac Terminal-ում:
cd Desktop
Սցենարը կազմելու համար պահպանեք Java ֆայլը և գործարկեք Javac հրամանը հրամանի տողում.
javac SimpleScript.java
Սցենարը գործարկելու համար օգտագործեք Java հրամանը.
java SimpleScript
Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:
Բացեք ֆայլը՝ դիտելու բովանդակությունը, որը ձեր ծրագիրը պատճենել է բնօրինակ ֆայլից:
Ինչպես պատճենել ֆայլերը՝ օգտագործելով Files.copy
Եթե դուք օգտագործում եք Java 7 կամ ավելի նոր տարբերակ, կարող եք օգտագործել Files.copy մեթոդը: Այս մեթոդը, ընդհանուր առմամբ, ավելի պարզ իրականացում է: Ըստ Java Documentation-ի, ֆունկցիայի համար կան բազմաթիվ ծանրաբեռնվածություններ:
Օրինակ, Files.copy մեթոդը կարող է նաև օգտագործել մուտքային հոսք՝ ֆայլերը մի տեղից մյուսը պատճենելու համար, բայց ավելի քիչ կոդ օգտագործող մեթոդի միջոցով: Կարող եք նաև օգտագործել Paths-ը կամ ինքներդ նշել, թե ինչպես եք ուզում, որ մեթոդը պատճենի ձեր ֆայլը:
- Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-2.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Ավելացնել ցանկացած գրավոր բովանդակություն ֆայլի ներսում:
Ֆայլի վերևում ավելացրեք ներմուծումներ «java.nio.file.Paths» և «java.nio.file.Files» դասերի համար:
import java.nio.file.Paths; import java.nio.file.Files;
Ավելացրեք երկու տող, որոնք ներկայացնում են աղբյուրի ֆայլի և նպատակակետի հարաբերական ֆայլի ուղին: Օգտագործեք Files.copy մեթոդը, որն արդեն կկարգավորի ֆայլը նպատակակետին պատճենելու տրամաբանությունը:
String copySource = "Copy-File-2.txt"; String copyDestination = "Destination/Copy-File-2.txt"; try { Files.copy(Paths.get(copySource), Paths.get(copyDestination)); } catch (Exception e) { System.out.println("Could not copy the file to the destination: " + copyDestination + ". Check if the folder or file already exists."); } System.out.println("2nd File copied");
- Գործարկեք սցենարը՝ օգտագործելով Javac և Java հրամանները:
Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:
Ինչպես պատճենել ֆայլերը՝ օգտագործելով FileChannel.transferTo()
Ըստ Java Documentation-ի, այս մեթոդը կարող է ֆայլերը պատճենելու պոտենցիալ ավելի արագ միջոց լինել: Այնուամենայնիվ, դա կախված կլինի գործառույթն իրականացնելու ձևից:
- Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-3.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Այս ֆայլին ավելացրեք որոշ նմուշային բովանդակություն:
-
SimpleScript.java-ի վերևում ներմուծեք «java.nio.channels.FileChannel» դասը io փաթեթից ֆայլի հետ կապված նախկին երեք սովորական դասերի հետ միասին:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel;
Ստեղծեք ֆայլի օբյեկտներ աղբյուրի և նպատակակետի համար և օգտագործեք դրանք մուտքային հոսք և ելքային հոսք ստեղծելու համար:
File src = new File("Copy-File-3.txt"); File dst = new File("Destination/Copy-File-3.txt"); FileInputStream inStream = new FileInputStream(src); FileOutputStream outStream = new FileOutputStream(dst);
Օգտագործեք TransferTo մեթոդը FileChannel դասից՝ ֆայլը իր նպատակակետին պատճենելու համար:
try { FileChannel inChannel = inStream.getChannel(); FileChannel outChannel = outStream.getChannel(); inChannel.transferTo(0, inChannel.size(), outChannel); } catch (Exception e) { System.out.println("Could not copy the file to the destination: " + dst.getPath() + ". Check if the folder or file already exists."); } finally { // Close the streams inStream.close(); outStream.close(); } System.out.println("3rd File copied");
- Գործարկեք սցենարը՝ օգտագործելով Javac և Java հրամանները:
Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:
Java-ում ֆայլերի պատճենումը հենց սկիզբն է
Կան բազմաթիվ եղանակներ, որոնցով կարող եք պատճենել ֆայլը Java-ում: Երեք հնարավոր եղանակներ ներառում են ավանդական հոսքի մեթոդի, Files.copy մեթոդի կամ transferTo մեթոդի օգտագործումը:
Կան բազմաթիվ այլ ֆայլերի կառավարիչ գործողություններ, որոնք կարող եք կատարել Java-ի միջոցով: Դրանցից ոմանք ներառում են ֆայլեր տեղափոխելը, ֆայլերի ջնջումը կամ ֆայլերի սեղմումը: Սրանք կարող են օգտակար լինել իմանալու համար, եթե ձեզ անհրաժեշտ է ավտոմատացնել որոշակի գործընթացներ ֆայլերի կառավարիչում: