Java - Stvorite datoteku

1. Pregled

U ovom brzom vodiču naučit ćemo kako stvoriti novu datoteku na Javi - prvo koristeći Datoteke i Staza klase iz NIO-a, zatim Java Datoteka i FileOutputStream klase, Google Guava i na kraju Apache Commons IO knjižnica.

Ovaj je članak dio serije "Java - Povratak na osnovno" ovdje na Baeldungu.

2. Postavljanje

U primjerima ćemo definirati konstantu za naziv datoteke:

privatni konačni niz FILE_NAME = "src / test / resources / fileToCreate.txt";

Također ćemo dodati korak čišćenja kako bismo bili sigurni da datoteka već ne postoji prije svakog testa i kako bismo je izbrisali nakon svakog pokretanja testa:

@AfterEach @BeforeEach public void cleanUpFiles () {Datoteka targetFile = nova datoteka (FILE_NAME); targetFile.delete (); }

3. Korištenje NIO-a Files.createFile ()

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

@Test javna praznina givenUsingNio_whenCreatingFile_thenCorrect () baca IOException {Path newFilePath = Paths.get (FILE_NAME); Files.createFile (newFilePath); }

Kao što vidite, kod je i dalje vrlo jednostavan; sada koristimo novo Staza sučelje umjesto starog Datoteka.

Ovdje treba napomenuti da novi API dobro koristi iznimke. Ako datoteka već postoji, više ne moramo provjeravati povratni kôd. Umjesto toga dobit ćemo a FileAlreadyExistsException:

java.nio.file.FileAlreadyExistsException: src / test / resources / fileToCreate.txt na sun.n.f.WindowsException.translateToIOException (WindowsException.java:81)

4. Koristeći File.createNewFile ()

Pogledajmo sada kako možemo učiniti isto koristiti java.io.Datoteka razred:

@Test public void givenUsingFile_whenCreatingFile_thenCorrect () baca IOException {File newFile = new File (FILE_NAME); logički uspjeh = newFile.createNewFile (); assertTrue (uspjeh); }

Imajte na umu da datoteka ne smije postojati da bi ova operacija uspjela. Ako datoteka postoji, tada createNewFile () operacija će vratiti false.

5. Korištenje FileOutputStream

Drugi način stvaranja nove datoteke je koristiti java.io.FileOutputStream:

@Test public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect () baca IOException {try (FileOutputStream fileOutputStream = new FileOutputStream (FILE_NAME)) {}}

U ovom se slučaju nova datoteka stvara kada instanciramo datoteku FileOutputStream objekt. Ako datoteka s danim imenom već postoji, bit će prepisana. Ako je, međutim, postojeća datoteka direktorij ili se iz bilo kojeg razloga ne može stvoriti nova datoteka, tada ćemo dobiti FileNotFoundException.

Uz to, napomena da smo koristili a pokušajte s resursima izjava - kako biste bili sigurni da je tok pravilno zatvoren.

6. Korištenje Guave

Rješenje Guava za stvaranje nove datoteke također je i brza jednoredna linija:

@Test public void givenUsingGuava_whenCreatingFile_thenCorrect () baca IOException {com.google.common.io.Files.touch (nova datoteka (FILE_NAME)); }

7. Korištenje Apache Commons IO

Biblioteka Apache Commons nudi FileUtils.touch () metoda koja provodi isto ponašanje kao "dodir”Uslužni program u Linuxu.

Stoga kreira novu praznu datoteku ili čak datoteku i puni put do nje u datotečnom sustavu:

@Test javna praznina givenUsingCommonsIo_whenCreatingFile_thenCorrect () baca IOException {FileUtils.touch (nova datoteka (FILE_NAME)); }

Imajte na umu da se ovo ponaša malo drugačije od prethodnih primjera: ako datoteka već postoji, operacija neće uspjeti, ona jednostavno ne poduzima ništa.

I tu imamo - 4 brza načina za stvaranje nove datoteke na Javi.

8. Zaključak

U ovom smo članku pogledali različita rješenja za stvaranje datoteke na Javi. Koristili smo razrede koji su dio JDK-a i vanjske knjižnice.

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