Java - preimenujte ili premjestite datoteku

1. Pregled

U ovom ćemo brzom vodiču pogledati preimenovanje / premještanje datoteke u Javi.

Prvo ćemo razmotriti upotrebu Datoteke i Staza klase iz NIO-a, zatim Java Datoteka razreda, Google Guava i na kraju Apache Commons IO knjižnica.

Ovaj je članak dio „Java - Povratak na Basic”Serija ovdje na Baeldungu.

2. Postavljanje

U primjerima ćemo upotrijebiti sljedeću postavku koja se sastoji od 2 konstante za naziv izvorne i odredišne ​​datoteke i koraka čišćenja da bi se testovi mogli izvoditi više puta:

privatni konačni niz FILE_TO_MOVE = "src / test / resources / originalFileToMove.txt"; privatni konačni niz TARGET_FILE = "src / test / resources / targetFileToMove.txt"; @BeforeEach javna praznina createFileToMove () baca IOException {File fileToMove = nova datoteka (FILE_TO_MOVE); fileToMove.createNewFile (); } @AfterEach public void cleanUpFiles () {Datoteka targetFile = nova datoteka (TARGET_FILE); targetFile.delete (); }

3. Korištenje NIO-a Staze i Datoteke Nastava

Krenimo od koristiti Files.move () metoda iz Java NIO paketa:

@Test javna praznina givenUsingNio_whenMovingFile_thenCorrect () baca IOException {Path fileToMovePath = Paths.get (FILE_TO_MOVE); Staza targetPath = Paths.get (TARGET_FILE); Files.move (fileToMovePath, targetPath); }

U JDK7 NIO paket je značajno ažuriran, a Staza razred dodan. Ovo pruža metode za prikladno rukovanje artefaktima datotečnog sustava.

Imajte na umu da bi i datoteka i ciljni direktorij trebali postojati.

4. Korištenje Datoteka Razred

Pogledajmo sada kako možemo učiniti isto koristiti File.renameTo () metoda:

@Test javna praznina givenUsingFileClass_whenMovingFile_thenCorrect () baca IOException {File fileToMove = nova datoteka (FILE_TO_MOVE); boolean isMoved = fileToMove.renameTo (nova datoteka (TARGET_FILE)); if (! isMoved) {baciti novi FileSystemException (TARGET_FILE); }}

U ovom primjeru datoteka koju treba premjestiti postoji, kao i ciljni direktorij.

Imajte na umu da preimenovati u () donosi samo dvije vrste izuzetaka:

  • SecurityException - ako upravitelj sigurnosti uskrati pisanje pristupa izvoru ili odredištu
  • NullPointerException - u slučaju da je cilj parametra null

Ako cilj ne postoji u datotečnom sustavu - neće se izuzeti iznimka - i morat ćete provjeriti vraćenu zastavu uspjeha metode.

5. Korištenje Guave

Dalje - pogledajmo rješenje Guava, koje pruža povoljno Files.move () metoda:

@Test javna praznina givenUsingGuava_whenMovingFile_thenCorrect () baca IOException {File fileToMove = nova datoteka (FILE_TO_MOVE); Datoteka targetFile = nova datoteka (TARGET_FILE); com.google.common.io.Files.move (fileToMove, targetFile); }

Opet, u ovom primjeru, datoteka koju treba premjestiti i ciljni direktorij moraju postojati.

6. Uz Commons IO

Na kraju, pogledajmo rješenje s Apache Commons IO - vjerojatno najjednostavnije:

@Test javna praznina givenUsingApache_whenMovingFile_thenCorrect () baca IOException {FileUtils.moveFile (FileUtils.getFile (FILE_TO_MOVE), FileUtils.getFile (TARGET_FILE)); }

Ovaj će jedan redak, naravno, omogućiti premještanje ili preimenovanje, ovisno o tome je li ciljni direktorij isti ili ne.

Alternativno - evo rješenja za posebno premještanje, koje nam omogućuje i automatsko stvaranje odredišnog direktorija ako već ne postoji:

@Test javna praznina givenUsingApache_whenMovingFileApproach2_thenCorrect () baca IOException {FileUtils.moveFileToDirectory (FileUtils.getFile ("src / test / resources / fileToMove.txt"), FileUtils.getFile ("src /" src ("src")). }

6. Zaključak

U ovom smo članku pogledali različita rješenja za premještanje datoteke na Javi. Usredotočili smo se na preimenovanje u ovim isječcima koda, ali premještanje je, naravno, isto, samo ciljni direktorij mora biti drugačiji.

Kôd za primjere dostupan je na GitHub-u.