Java - Opprett en fil

1. Oversikt

I denne raske opplæringen skal vi lære hvordan du oppretter en ny fil i Java - først ved hjelp av Filer og Sti klasser fra NIO, deretter Java Fil og FileOutputStream klasser, Google Guava, og til slutt Apache Commons IO-biblioteket.

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

2. Oppsett

I eksemplene definerer vi en konstant for filnavnet:

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

Og vi vil også legge til et oppryddingstrinn for å sikre at filen ikke allerede eksisterer før hver test, og for å slette den etter hver testkjøring:

@AfterEach @BeforeEach public void cleanUpFiles () {File targetFile = new File (FILE_NAME); targetFile.delete (); }

3. Bruke NIO Files.createFile ()

La oss starte med bruker Files.createFile () metode fra Java NIO-pakken:

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

Som du ser er koden fortsatt veldig enkel; vi bruker nå det nye Sti grensesnitt i stedet for det gamle Fil.

En ting å merke seg her er at den nye API-en bruker god unntak. Hvis filen allerede eksisterer, trenger vi ikke lenger sjekke 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 hjelp av File.createNewFile ()

La oss nå se på hvordan vi kan gjøre det samme bruker java.io. fil klasse:

@Test offentlig ugyldighet givenUsingFile_whenCreatingFile_thenCorrect () kaster IOException {File newFile = new File (FILE_NAME); boolsk suksess = newFile.createNewFile (); assertTrue (suksess); }

Merk at filen ikke må eksistere for at denne operasjonen skal lykkes. Hvis filen eksisterer, blir filen createNewFile () operasjonen vil returnere falsk.

5. Bruke FileOutputStream

En annen måte å opprette en ny fil på er å bruke java.io.FileOutputStream:

@Test offentlig ugyldig givenUsingFileOutputStream_whenCreatingFile_thenCorrect () kaster IOException {try (FileOutputStream fileOutputStream = ny FileOutputStream (FILE_NAME)) {}}

I dette tilfellet opprettes en ny fil når vi instanserer FileOutputStream gjenstand. Hvis en fil med et gitt navn allerede eksisterer, vil den bli overskrevet. Hvis den eksisterende filen er en katalog, eller en ny fil ikke kan opprettes av en eller annen grunn, får vi en FileNotFoundException.

Legg også merke til at vi brukte en prøv-med-ressurser uttalelse - for å være sikker på at en strøm er ordentlig lukket.

6. Bruke Guava

Guava-løsningen for å lage en ny fil er også en rask one-liner:

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

7. Bruke Apache Commons IO

Apache Commons-biblioteket tilbyr FileUtils.touch () metode som implementerer den samme oppførselen som “ta på”Verktøy i Linux.

Derfor oppretter den en ny tom fil eller til og med en fil og hele banen til den i et filsystem:

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

Merk at dette oppfører seg litt annerledes enn de forrige eksemplene: hvis filen allerede eksisterer, mislykkes ikke operasjonen, den gjør ganske enkelt ikke noe.

Og der har vi det - 4 raske måter å lage en ny fil på Java.

8. Konklusjon

I denne artikkelen så vi på forskjellige løsninger for å lage en fil i Java. Vi brukte klasser som er en del av JDK og eksterne biblioteker.

Koden for eksemplene er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found