Néhány forgatókönyv megköveteli, hogy egy fájlt Java nyelven másoljon. Lehet, hogy egy egyszerű szkriptet hoz létre a fájlkezelő folyamatainak automatizálására. Akár egy teljes körű alkalmazást is írhat, amely fájlokkal működik.

A kívánt teljesítménytől, egyszerűségtől vagy akár a használt Java-verziótól függően számos módon másolhat egy fájlt.

Fájlok másolása a FileInputStream és a FileOutputStream használatával

Ez a módszer úgy működik, hogy manuálisan olvassa be a fájl minden egyes bájtját, és egy új célhelyre írja. Az alábbi Files.copy metódussal ellentétben ezt a módszert minden Java-verzióhoz használhatja, beleértve a Java 6-os és korábbi verzióit is.

A FileInputStream osztályt használja a forrásfájl bájtjainak olvasásához, a FileOutputStream osztályt pedig a bájtok célba írásához.

  1. Hozzon létre egy "SimpleScript.java" nevű fájlt bárhol a számítógépén.
  2. Nyissa meg a fájlt egy szövegszerkesztőben vagy IDE-ben, és másolja a következő alapkódot az alkalmazásba.
    import java.io. IOException;
    instagram viewer

    osztálySimpleScript{
    nyilvánosstatikusüresfő-(String args[])dobások IOException {
    // Itt a kódod
    }
    }

  3. Importálja ezeket a további Input Stream és Output Stream osztályokat a fájl tetején, közvetlenül az első importálási utasítás után.
    import java.io. Fájl;
    import java.io. InputStream;
    import java.io. OutputStream;
    import java.io. FileInputStream;
    import java.io. FileOutputStream;
  4. Hozzon létre egy új fájlt "Copy-File-1.txt" néven ugyanabban a mappában, mint a SimpleScript.java fájl. Adjon hozzá bármilyen írott tartalmat a fájlba.
  5. Ugyanebben a mappában hozzon létre egy új könyvtárat "Cél" néven. A cél a "Copy-File-1.txt" fájl másolása az új mappába.
  6. Az osztály fő funkcióján belül használja a Fájl osztályt két új fájlobjektum létrehozásához. A forrás, amely a másolni kívánt fájl lesz, és a cél, ahová a fájlt másolni szeretné. Ha a célfájl nem létezik, a program létrehoz egy újat.
    osztálySimpleScript{ 
    nyilvánosstatikusüresfő-(String args[])dobások IOException {
    // A fájl másolásának első módja
    Fájlforrás = új Fájl("Másolás-Fájl-1.txt");
    Fájl rendeltetési helye = új Fájl("Cél/Másolás-Fájl-1.txt");
    }
    }
  7. Ezt követően hozzon létre egy InputStream és OutputStream objektumot.
    InputStream bemenet = nulla;
    OutputStream kimenet = nulla;
  8. Használja a bemeneti adatfolyamot az adatok bájtokban történő olvasásához, a kimeneti adatfolyamot pedig az adatok új helyre írásához.
    próbálja meg {
    // FileInputStream és FileOutputStream objektumok létrehozása
    bemenet = új FileInputStream (forrás);
    kimenet = új FileOutputStream (célállomás);
    byte[] buf = újbyte[1024];
    int bytesRead;

    // Bájtok írása a célhelyre
    míg ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, bytesRead);
    }
    } fogás (IOKivétel e) {
    e.printStackTrace();
    System.out.println("Nem sikerült a fájlt a célhelyre másolni: " + destination.getPath() + ". Jelölje be ha a mappa vagy fájl már létezik.");
    } végül {
    // Zárja be a folyamokat
    ha (bevitel != nulla) {
    input.close();
    }

    ha (kimenet != nulla) {
    output.close();
    }
    }

    System.out.println("Fájl másolva");

  9. A szkript futtatásához nyissa meg a parancssort. Keresse meg azt a mappát, ahol a Java fájlt tárolta a cd paranccsal a Windows parancssor vagy a Mac terminál.
    CD Asztali
  10. A szkript lefordításához mentse el a Java fájlt, és futtassa a Javac parancs a parancssorban:
    javac SimpleScript.java
  11. A szkript futtatásához használja a Jáva parancs:
    java SimpleScript
    Egyetlen kimeneti sort kell látnia hiba nélkül:
  12. A másolt fájl megtekintéséhez lépjen a "Cél" mappába.
  13. Nyissa meg a fájlt a tartalom megtekintéséhez, amelyet a program az eredeti fájlból másolt.

Fájlok másolása a Files.copy használatával

Ha Java 7 vagy újabb verziót használ, használhatja a Files.copy módszert. Ez a módszer általában egy egyszerűbb megvalósítás. Szerint a Java dokumentáció, a funkciónak többszörös túlterhelése van.

Például a Files.copy módszer is használhat bemeneti adatfolyamot a fájlok egyik helyről a másikra másolására, de kevesebb kódot használó módszerrel. Használhatja az Útvonalakat is, vagy saját maga határozhatja meg, hogyan szeretné, hogy a módszer másolja a fájlt.

  1. Hozzon létre egy új fájlt "Copy-File-2.txt" néven ugyanabban a mappában, mint a SimpleScript.java fájl. Adjon hozzá bármilyen írott tartalmat a fájlba.
  2. A fájl tetején adja hozzá a „java.nio.file. Paths” és „java.nio.file. Fájlok" osztályok.
    import java.nio.file. utak;
    import java.nio.file. Fájlok;
  3. Adjon hozzá két karakterláncot, amelyek a forrásfájl és a cél relatív elérési útját jelentik. Használja a Files.copy metódust, amely már kezeli a fájl célhelyre másolásának logikáját.
    String copySource = "Fájl másolása-2.txt";
    String copyDestination = "Cél/Fájlmásolás-2.txt";

    próbálja meg {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } fogás (e kivétel) {
    System.out.println("Nem sikerült a fájlt a célhelyre másolni: " + copyDestination + ". Jelölje be ha a mappa vagy fájl már létezik.");
    }
    System.out.println("2nd fájl másolva");

  4. Futtassa a szkriptet a Javac és a Java parancsokkal.
  5. A másolt fájl megtekintéséhez lépjen a "Cél" mappába.

Fájlok másolása a FileChannel.transferTo() használatával

Szerint a Java dokumentáció, ez a módszer potenciálisan gyorsabb módja lehet a fájlok másolásának. Ez azonban a funkció megvalósításának módjától függ.

  1. Hozzon létre egy új fájlt "Copy-File-3.txt" néven ugyanabban a mappában, mint a SimpleScript.java fájl. Adjon hozzá néhány mintatartalmat ehhez a fájlhoz.
  2. A SimpleScript.java tetején importálja a „java.nio.channels. FileChannel" osztály az io csomag korábbi, általános fájlokkal kapcsolatos osztályai közül három mellett.
    import java.io. Fájl;
    import java.io. FileInputStream;
    import java.io. FileOutputStream;
    import java.nio.channels. FileChannel;
  3. Hozzon létre fájlobjektumokat a forráshoz és a célhoz, és használja ezeket egy bemeneti adatfolyam és egy kimeneti adatfolyam létrehozásához.
    Fájl src = új Fájl("Másolás-Fájl-3.txt");
    Fájl dst = új Fájl("Cél/Másolás-Fájl-3.txt");
    FileInputStream inStream = új FileInputStream (src);
    FileOutputStream outStream = új FileOutputStream (dst);
  4. A FileChannel osztály TransferTo metódusával másolja a fájlt a rendeltetési helyére.
    próbálja meg {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } fogás (e kivétel) {
    System.out.println("Nem sikerült a fájlt a célhelyre másolni: " + dst.getPath() + ". Jelölje be ha a mappa vagy fájl már létezik.");
    } végül {
    // Zárja be a folyamokat
    inStream.close();
    outStream.close();
    }
    System.out.println("3rd Fájl másolva");
  5. Futtassa a szkriptet a Javac és a Java parancsokkal.
  6. A másolt fájl megtekintéséhez lépjen a "Cél" mappába.

A fájlok másolása Java-ban csak a kezdet

Java-ban többféleképpen másolhat fájlokat. Három lehetséges módszer a hagyományos adatfolyam, a Files.copy vagy a transferTo módszer használata.

Számos más fájlkezelő művelet is elvégezhető a Java használatával. Ezek közé tartozik a fájlok áthelyezése, törlése vagy fájlok tömörítése. Ezek hasznosak lehetnek, ha bizonyos folyamatokat automatizálni kell a fájlkezelőben.