Java-ում ֆայլերը պատճենելու տարբեր եղանակներ


Փորձեք Java-ում ֆայլը պատճենելու այս մոտեցումներից մեկը, բայց համոզվեք, որ հասկանաք, թե որն է լավագույնը ձեր կարիքների համար:

Մի քանի սցենարներ պահանջում են, որ դուք պատճենեք ֆայլը Java-ում: Դուք կարող եք ստեղծել մի պարզ սցենար՝ ֆայլերի կառավարչի համար գործընթացները ավտոմատացնելու համար: Դուք նույնիսկ կարող եք գրել ամբողջական ծրագիր, որն աշխատում է ֆայլերի հետ:

Կան բազմաթիվ եղանակներ, որոնցով կարող եք պատճենել ֆայլը՝ կախված ձեր պահանջվող կատարողականությունից, պարզությունից կամ նույնիսկ Java-ի որ տարբերակից եք օգտագործում:

Ինչպես պատճենել ֆայլերը՝ օգտագործելով FileInputStream և FileOutputStream

Այս մեթոդն աշխատում է ֆայլից յուրաքանչյուր բայթ տվյալների ձեռքով կարդալով և այն նոր նպատակակետ գրելով: Ի տարբերություն ստորև ներկայացված Files.copy մեթոդի, դուք կարող եք օգտագործել այս մեթոդը Java-ի բոլոր տարբերակների համար, ներառյալ Java 6 և ավելի վաղ:

Այն օգտագործում է FileInputStream դասը՝ սկզբնաղբյուր ֆայլից բայթ կարդալու համար, իսկ FileOutputStream՝ նպատակակետին բայթ գրելու համար։

  1. Ստեղծեք ֆայլ ձեր համակարգչի ցանկացած վայրում, որը կոչվում է «SimpleScript.java»:
  2. Բացեք ֆայլը տեքստային խմբագրիչում կամ IDE-ում և պատճենեք հետևյալ հիմնական կոդը հավելվածում:

    import java.io.IOException;
     
    class SimpleScript { 
        public static void main(String args[]) throws IOException { 
            // Your code here
        }
    } 
  3. Ներմուծեք այս լրացուցիչ Input Stream և Output Stream դասերը ֆայլի վերևում՝ առաջին ներմուծման հայտարարությունից անմիջապես հետո:

    import java.io.File;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
  4. Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-1.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Ավելացնել ցանկացած գրավոր բովանդակություն ֆայլի ներսում:
  5. Նույն թղթապանակում ստեղծեք նաև նոր գրացուցակ, որը կոչվում է «Destination»: Նպատակն է պատճենել «Copy-File-1.txt» ֆայլը նոր թղթապանակում:
  6. Դասի հիմնական ֆունկցիայի ներսում օգտագործեք 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");
        }
    } 
  7. Դրանից հետո ստեղծեք InputStream և OutputStream օբյեկտ:

    InputStream input = null;
    OutputStream output = null;
  8. Օգտագործեք մուտքային հոսքը՝ տվյալները բայթերով կարդալու համար, իսկ ելքային հոսքը՝ տվյալները նոր վայրում գրելու համար:

    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");
  9. Սցենարը գործարկելու համար բացեք հրամանի տող: Նավարկեք դեպի այն թղթապանակը, որտեղ դուք պահել եք ձեր Java ֆայլը, օգտագործելով cd հրամանը Windows Command Prompt-ում կամ Mac Terminal-ում:

    cd Desktop
  10. Սցենարը կազմելու համար պահպանեք Java ֆայլը և գործարկեք Javac հրամանը հրամանի տողում.

    javac SimpleScript.java
  11. Սցենարը գործարկելու համար օգտագործեք Java հրամանը.

    java SimpleScript

  12. Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:

  13. Բացեք ֆայլը՝ դիտելու բովանդակությունը, որը ձեր ծրագիրը պատճենել է բնօրինակ ֆայլից:

Ինչպես պատճենել ֆայլերը՝ օգտագործելով Files.copy

Եթե դուք օգտագործում եք Java 7 կամ ավելի նոր տարբերակ, կարող եք օգտագործել Files.copy մեթոդը: Այս մեթոդը, ընդհանուր առմամբ, ավելի պարզ իրականացում է: Ըստ Java Documentation-ի, ֆունկցիայի համար կան բազմաթիվ ծանրաբեռնվածություններ:

Օրինակ, Files.copy մեթոդը կարող է նաև օգտագործել մուտքային հոսք՝ ֆայլերը մի տեղից մյուսը պատճենելու համար, բայց ավելի քիչ կոդ օգտագործող մեթոդի միջոցով: Կարող եք նաև օգտագործել Paths-ը կամ ինքներդ նշել, թե ինչպես եք ուզում, որ մեթոդը պատճենի ձեր ֆայլը:

  1. Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-2.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Ավելացնել ցանկացած գրավոր բովանդակություն ֆայլի ներսում:
  2. Ֆայլի վերևում ավելացրեք ներմուծումներ «java.nio.file.Paths» և «java.nio.file.Files» դասերի համար:

    import java.nio.file.Paths;
    import java.nio.file.Files;
  3. Ավելացրեք երկու տող, որոնք ներկայացնում են աղբյուրի ֆայլի և նպատակակետի հարաբերական ֆայլի ուղին: Օգտագործեք 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");
  4. Գործարկեք սցենարը՝ օգտագործելով Javac և Java հրամանները:
  5. Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:

Ինչպես պատճենել ֆայլերը՝ օգտագործելով FileChannel.transferTo()

Ըստ Java Documentation-ի, այս մեթոդը կարող է ֆայլերը պատճենելու պոտենցիալ ավելի արագ միջոց լինել: Այնուամենայնիվ, դա կախված կլինի գործառույթն իրականացնելու ձևից:

  1. Ստեղծեք նոր ֆայլ, որը կոչվում է «Copy-File-3.txt», նույն պանակում, ինչ ձեր SimpleScript.java ֆայլը: Այս ֆայլին ավելացրեք որոշ նմուշային բովանդակություն:
  2. SimpleScript.java-ի վերևում ներմուծեք «java.nio.channels.FileChannel» դասը io փաթեթից ֆայլի հետ կապված նախկին երեք սովորական դասերի հետ միասին:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.nio.channels.FileChannel;
  3. Ստեղծեք ֆայլի օբյեկտներ աղբյուրի և նպատակակետի համար և օգտագործեք դրանք մուտքային հոսք և ելքային հոսք ստեղծելու համար:

    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);
  4. Օգտագործեք 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");
  5. Գործարկեք սցենարը՝ օգտագործելով Javac և Java հրամանները:
  6. Նավարկեք ձեր «Նպատակակետ» թղթապանակ՝ ձեր պատճենված ֆայլը դիտելու համար:

Java-ում ֆայլերի պատճենումը հենց սկիզբն է

Կան բազմաթիվ եղանակներ, որոնցով կարող եք պատճենել ֆայլը Java-ում: Երեք հնարավոր եղանակներ ներառում են ավանդական հոսքի մեթոդի, Files.copy մեթոդի կամ transferTo մեթոդի օգտագործումը:

Կան բազմաթիվ այլ ֆայլերի կառավարիչ գործողություններ, որոնք կարող եք կատարել Java-ի միջոցով: Դրանցից ոմանք ներառում են ֆայլեր տեղափոխելը, ֆայլերի ջնջումը կամ ֆայլերի սեղմումը: Սրանք կարող են օգտակար լինել իմանալու համար, եթե ձեզ անհրաժեշտ է ավտոմատացնել որոշակի գործընթացներ ֆայլերի կառավարիչում: