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.