Java - Átnevezhet vagy áthelyezhet egy fájlt
1. Áttekintés
Ebben a gyors bemutatóban meg fogjuk vizsgálni fájl átnevezése / áthelyezése Java-ban.
Először megvizsgáljuk a Fájlok és Pálya osztályok a NIO-tól, majd a Java File osztály, a Google Guava és végül az Apache Commons IO könyvtár.
Ez a cikk a „Java - Vissza az alapokhoz”Sorozat itt, a Baeldungon.
2. Beállítás
A példákban a következő beállítást fogjuk használni, amely 2 konstansból áll a forrás- és a célfájl nevéhez, valamint egy tisztítási lépésből áll, hogy a teszteket többször is futtathassuk:
privát végső karakterlánc FILE_TO_MOVE = "src / test / resources / originalFileToMove.txt"; privát végső karakterlánc TARGET_FILE = "src / test / resources / targetFileToMove.txt"; @BeforeEach public void createFileToMove () dobja az IOException-t {File fileToMove = new File (FILE_TO_MOVE); fileToMove.createNewFile (); } @AfterEach public void cleanUpFiles () {Fájl targetFile = új fájl (TARGET_FILE); targetFile.delete (); }
3. Az NIO használata Útvonalak és Fájlok Osztályok
Kezdjük azzal használni a Files.move () módszer a Java NIO csomagból:
@Test public void givenUsingNio_whenMovingFile_thenCorrect () dobja az IOException {Path fileToMovePath = Paths.get (FILE_TO_MOVE); Path targetPath = Paths.get (TARGET_FILE); Files.move (fileToMovePath, targetPath); }
A JDK7-ben az NIO csomag jelentősen frissült, és a Pálya osztály hozzáadva. Ez módszereket kínál a fájlrendszer-leletek kényelmes kezelésére.
Vegye figyelembe, hogy a fájlnak és a célkönyvtárnak egyaránt léteznie kell.
4. A File Osztály
Most nézzük meg, hogyan tehetnénk ugyanezt használni a File.renameTo () módszer:
@Test public void givenUsingFileClass_whenMovingFile_thenCorrect () dobja az IOException {File fileToMove = new File (FILE_TO_MOVE); logikai isMoved = fileToMove.renameTo (új fájl (TARGET_FILE)); if (! isMoved) {dobjon új FileSystemException-t (TARGET_FILE); }}
Ebben a példában létezik az áthelyezendő fájl, valamint a célkönyvtár.
Vegye figyelembe, hogy renameTo () csak kétféle kivételt vet fel:
- SecurityException - ha egy biztonsági menedzser megtagadja a forráshoz vagy a célhoz való hozzáférés írását
- NullPointerException - abban az esetben, ha a célparaméter null
Ha a cél nem létezik egy fájlrendszerben - nem lesz kivétel, akkor ellenőriznie kell a módszer visszaküldött sikerjelzőjét.
5. Guava használata
Következő - vessünk egy pillantást a Guava megoldásra, amely kényelmes Files.move () módszer:
@Test public void givenUsingGuava_whenMovingFile_thenCorrect () dobja az IOException {File fileToMove = new File (FILE_TO_MOVE); Fájl targetFile = új fájl (TARGET_FILE); com.google.common.io.Files.move (fileToMove, targetFile); }
Ebben a példában megint a mozgatni kívánt fájlnak és a célkönyvtárnak léteznie kell.
6. A Commons IO-val
Végül vessünk egy pillantást az Apache Commons IO megoldására - valószínűleg a legegyszerűbbre:
@Test public void givenUsingApache_whenMovingFile_thenCorrect () dobja az IOException {FileUtils.moveFile (FileUtils.getFile (FILE_TO_MOVE), FileUtils.getFile (TARGET_FILE)); }
Ez az egy sor természetesen lehetővé teszi mind az áthelyezést, mind az átnevezést, attól függően, hogy a célkönyvtár azonos-e vagy sem.
Alternatív megoldásként - íme egy megoldás a speciális költözéshez, amely lehetővé teszi számunkra a célkönyvtár automatikus létrehozását is, ha még nem létezik:
@Test public void givenUsingApache_whenMovingFileApproach2_thenCorrect () dobja az IOException {FileUtils.moveFileToDirectory (FileUtils.getFile ("src / test / resources / fileToMove.txt"), FileUtils.getFile ("src / main / / src / main /); }
6. Következtetés
Ebben a cikkben különböző megoldásokat vizsgáltunk egy fájl Java-áthelyezéséhez. Az átnevezésre összpontosítottunk ezekben a kódrészletekben, de az áthelyezés természetesen ugyanaz, csak a célkönyvtárnak kell eltérnie.
A példák kódja elérhető a GitHub oldalon.