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.
- Hozzon létre egy "SimpleScript.java" nevű fájlt bárhol a számítógépén.
- 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;
osztálySimpleScript{
nyilvánosstatikusüresfő-(String args[])dobások IOException {
// Itt a kódod
}
} - 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; - 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.
- 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.
- 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");
}
} - Ezt követően hozzon létre egy InputStream és OutputStream objektumot.
InputStream bemenet = nulla;
OutputStream kimenet = nulla; - 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");
- 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
- A szkript lefordításához mentse el a Java fájlt, és futtassa a Javac parancs a parancssorban:
javac SimpleScript.java
- A szkript futtatásához használja a Jáva parancs:
Egyetlen kimeneti sort kell látnia hiba nélkül:java SimpleScript
- A másolt fájl megtekintéséhez lépjen a "Cél" mappába.
- 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.
- 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.
- 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; - 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"); - Futtassa a szkriptet a Javac és a Java parancsokkal.
- 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.
- 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.
- 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; - 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); - 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"); - Futtassa a szkriptet a Javac és a Java parancsokkal.
- 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.