Java - Opret en fil

1. Oversigt

I denne hurtige vejledning skal vi lære at oprette en ny fil i Java - først ved hjælp af Filer og Sti klasser fra NIO, derefter Java Fil og FileOutputStream klasser, Google Guava og endelig Apache Commons IO-biblioteket.

Denne artikel er en del af "Java - Back to Basic" -serien her på Baeldung.

2. Opsætning

I eksemplerne definerer vi en konstant for filnavnet:

privat final String FILE_NAME = "src / test / resources / fileToCreate.txt";

Og vi tilføjer også et oprydningstrin for at sikre, at filen ikke allerede findes før hver test, og for at slette den efter hver testkørsel:

@AfterEach @BeforeEach offentlig ugyldig cleanUpFiles () {File targetFile = ny fil (FILE_NAME); targetFile.delete (); }

3. Brug af NIO Files.createFile ()

Lad os starte med bruger Files.createFile () metode fra Java NIO-pakken:

@Test offentlig ugyldighed givenUsingNio_whenCreatingFile_thenCorrect () kaster IOException {Path newFilePath = Paths.get (FILE_NAME); Files.createFile (newFilePath); }

Som du kan se, er koden stadig meget enkel; vi bruger nu det nye Sti interface i stedet for det gamle Fil.

En ting at bemærke her er, at den nye API gør god brug af undtagelser. Hvis filen allerede findes, behøver vi ikke længere kontrollere en returkode. I stedet får vi en FileAlreadyExistsException:

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

4. Ved brug af File.createNewFile ()

Lad os nu se på, hvordan vi kan gøre det samme bruger java.io-fil klasse:

@Test offentlig ugyldighed givenUsingFile_whenCreatingFile_thenCorrect () kaster IOException {File newFile = ny fil (FILE_NAME); boolsk succes = newFile.createNewFile (); assertTrue (succes); }

Bemærk, at filen ikke må eksistere for at denne handling kan lykkes. Hvis filen findes, så er createNewFile () operation returnerer falsk.

5. Brug FileOutputStream

En anden måde at oprette en ny fil på er brug java.io.FileOutputStream:

@Test offentlig ugyldighed givenUsingFileOutputStream_whenCreatingFile_thenCorrect () kaster IOException {prøv (FileOutputStream fileOutputStream = ny FileOutputStream (FILE_NAME)) {}}

I dette tilfælde oprettes en ny fil, når vi instantierer FileOutputStream objekt. Hvis en fil med et givet navn allerede eksisterer, overskrives den. Hvis den eksisterende fil imidlertid er et bibliotek, eller en ny fil ikke kan oprettes af en eller anden grund, så får vi en FileNotFoundException.

Derudover skal du bemærke, at vi brugte en prøv med ressourcer erklæring - for at være sikker på, at en stream er korrekt lukket.

6. Brug af Guava

Guava-løsningen til oprettelse af en ny fil er også en hurtig one-liner:

@Test offentlig ugyldighed givenUsingGuava_whenCreatingFile_thenCorrect () kaster IOException {com.google.common.io.Files.touch (ny fil (FILE_NAME)); }

7. Brug af Apache Commons IO

Apache Commons-biblioteket leverer FileUtils.touch () metode, der implementerer den samme adfærd som “røre ved”Værktøj i Linux.

Derfor opretter den en ny tom fil eller endda en fil og den fulde sti til den i et filsystem:

@Test offentlig ugyldighed givenUsingCommonsIo_whenCreatingFile_thenCorrect () kaster IOException {FileUtils.touch (ny fil (FILE_NAME)); }

Bemærk, at dette opfører sig lidt anderledes end de foregående eksempler: hvis filen allerede eksisterer, mislykkes operationen ikke, den gør simpelthen ikke noget.

Og der har vi det - 4 hurtige måder at oprette en ny fil på Java.

8. Konklusion

I denne artikel kiggede vi på forskellige løsninger til oprettelse af en fil i Java. Vi brugte klasser, der er en del af JDK og eksterne biblioteker.

Koden til eksemplerne er tilgængelig på GitHub.