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.