Java - Erstellen Sie eine Datei

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie eine neue Datei in Java erstellen - zuerst mit den Klassen " Dateien" und " Pfad" von NIO, dann mit den Klassen " Java- Datei" und " FileOutputStream" , Google Guava und schließlich mit der Apache Commons-E / A-Bibliothek.

Dieser Artikel ist Teil der Reihe „Java - Back to Basic“ hier auf Baeldung.

2. Setup

In den Beispielen definieren wir eine Konstante für den Dateinamen:

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

Außerdem fügen wir einen Bereinigungsschritt hinzu, um sicherzustellen, dass die Datei nicht bereits vor jedem Test vorhanden ist, und um sie nach jedem Testlauf zu löschen:

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

3. Verwenden von NIO Files.createFile ()

Beginnen wir mit der Methode Files.createFile () aus dem Java NIO-Paket:

@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException { Path newFilePath = Paths.get(FILE_NAME); Files.createFile(newFilePath); }

Wie Sie sehen können, ist der Code immer noch sehr einfach; Wir verwenden jetzt die neue Pfadschnittstelle anstelle der alten Datei .

Hierbei ist zu beachten, dass die neue API Ausnahmen gut nutzt. Wenn die Datei bereits vorhanden ist, müssen wir keinen Rückkehrcode mehr überprüfen. Stattdessen erhalten wir eine FileAlreadyExistsException :

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

4. Verwenden von File.createNewFile ()

Schauen wir uns nun an, wie wir dasselbe mit der Klasse java.io.File tun können :

@Test public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException { File newFile = new File(FILE_NAME); boolean success = newFile.createNewFile(); assertTrue(success); }

Beachten Sie, dass die Datei nicht vorhanden sein darf, damit dieser Vorgang erfolgreich ist. Wenn die Datei vorhanden ist, gibt die Operation createNewFile () false zurück.

5. Verwenden von FileOutputStream

Eine andere Möglichkeit, eine neue Datei zu erstellen, ist die Verwendung von java.io.FileOutputStream :

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

In diesem Fall wird eine neue Datei erstellt, wenn wir das FileOutputStream- Objekt instanziieren . Wenn bereits eine Datei mit einem bestimmten Namen vorhanden ist, wird diese überschrieben . Wenn es sich bei der vorhandenen Datei jedoch um ein Verzeichnis handelt oder aus irgendeinem Grund keine neue Datei erstellt werden kann, wird eine FileNotFoundException angezeigt .

Beachten Sie außerdem, dass wir eine Try-with-Resources- Anweisung verwendet haben, um sicherzustellen, dass ein Stream ordnungsgemäß geschlossen ist.

6. Verwenden von Guave

Die Guava-Lösung zum Erstellen einer neuen Datei ist ebenfalls ein schneller Einzeiler:

@Test public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { com.google.common.io.Files.touch(new File(FILE_NAME)); }

7. Verwenden von Apache Commons IO

Die Apache Commons-Bibliothek bietet die FileUtils.touch () -Methode, die dasselbe Verhalten wie das Dienstprogramm " touch " unter Linux implementiert .

Daher erstellt es eine neue leere Datei oder sogar eine Datei und den vollständigen Pfad dazu in einem Dateisystem:

@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException { FileUtils.touch(new File(FILE_NAME)); }

Beachten Sie, dass sich dies etwas anders verhält als in den vorherigen Beispielen: Wenn die Datei bereits vorhanden ist, schlägt der Vorgang nicht fehl, sondern führt einfach nichts aus.

Und da haben wir es - 4 schnelle Möglichkeiten, eine neue Datei in Java zu erstellen.

8. Fazit

In diesem Artikel haben wir uns verschiedene Lösungen zum Erstellen einer Datei in Java angesehen. Wir haben Klassen verwendet, die Teil des JDK und externer Bibliotheken sind.

Der Code für die Beispiele ist auf GitHub verfügbar.