Java - Maak een bestand

1. Overzicht

In deze korte zelfstudie leren we hoe u een nieuw bestand in Java kunt maken - eerst met behulp van de Bestanden en Pad klassen van NIO, dan de Java het dossier en FileOutputStream klassen, Google Guava en tot slot de Apache Commons IO-bibliotheek.

Dit artikel maakt deel uit van de serie "Java - Back to Basic" hier op Baeldung.

2. Installatie

In de voorbeelden definiëren we een constante voor de bestandsnaam:

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

En we zullen ook een opschoningsstap toevoegen om ervoor te zorgen dat het bestand niet al bestaat vóór elke test, en om het na elke test te verwijderen:

@AfterEach @BeforeEach public void cleanUpFiles () {Bestand targetFile = nieuw bestand (FILE_NAME); targetFile.delete (); }

3. NIO gebruiken Bestanden.createFile ()

Laten we beginnen de ... gebruiken Bestanden.createFile () methode uit het Java NIO-pakket:

@Test openbare leegte gegevenUsingNio_whenCreatingFile_thenCorrect () gooit IOException {Path newFilePath = Paths.get (FILE_NAME); Files.createFile (newFilePath); }

Zoals u kunt zien, is de code nog steeds erg eenvoudig; we gebruiken nu de nieuwe Pad interface in plaats van de oude het dossier.

Een ding om hier op te merken is dat de nieuwe API goed gebruik maakt van uitzonderingen. Als het bestand al bestaat, hoeven we niet langer een retourcode te controleren. In plaats daarvan krijgen we een FileAlreadyExistsException:

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

4. Gebruik makend van Bestand.createNewFile ()

Laten we nu kijken hoe we hetzelfde kunnen doen de ... gebruiken java.io.File klasse:

@Test openbare ongeldige gegevenUsingFile_whenCreatingFile_thenCorrect () gooit IOException {File newFile = new File (FILE_NAME); booleaans succes = newFile.createNewFile (); assertTrue (succes); }

Merk op dat het bestand niet mag bestaan ​​om deze bewerking te laten slagen. Als het bestand wel bestaat, is het createNewFile () operatie zal false retourneren.

5. Met behulp van FileOutputStream

Een andere manier om een ​​nieuw bestand te maken, is door gebruik de java.io.FileOutputStream:

@Test openbare ongeldige gegevenUsingFileOutputStream_whenCreatingFile_thenCorrect () gooit IOException {try (FileOutputStream fileOutputStream = nieuwe FileOutputStream (FILE_NAME)) {}}

In dit geval wordt een nieuw bestand gemaakt wanneer we het FileOutputStream voorwerp. Als een bestand met een bepaalde naam al bestaat, wordt het overschreven. Als het bestaande bestand echter een map is of als er om welke reden dan ook geen nieuw bestand kan worden gemaakt, krijgen we een FileNotFoundException.

Merk bovendien op dat we een probeer-met-middelen statement - om er zeker van te zijn dat een stream correct is gesloten.

6. Guava gebruiken

De Guava-oplossing voor het maken van een nieuw bestand is ook een snelle oneliner:

@Test openbare leegte gegevenUsingGuava_whenCreatingFile_thenCorrect () gooit IOException {com.google.common.io.Files.touch (nieuw bestand (FILE_NAME)); }

7. Apache Commons IO gebruiken

De Apache Commons-bibliotheek biedt de FileUtils.touch () methode die hetzelfde gedrag implementeert als de "aanraken”Hulpprogramma in Linux.

Daarom maakt het een nieuw leeg bestand of zelfs een bestand en het volledige pad ernaartoe in een bestandssysteem:

@Test openbare leegte gegevenUsingCommonsIo_whenCreatingFile_thenCorrect () gooit IOException {FileUtils.touch (nieuw bestand (FILE_NAME)); }

Merk op dat dit zich iets anders gedraagt ​​dan de vorige voorbeelden: als het bestand al bestaat, mislukt de bewerking niet, het doet gewoon niets.

En daar hebben we het - 4 snelle manieren om een ​​nieuw bestand in Java te maken.

8. Conclusie

In dit artikel hebben we verschillende oplossingen bekeken voor het maken van een bestand in Java. We hebben klassen gebruikt die deel uitmaken van de JDK en externe bibliotheken.

De code voor de voorbeelden is beschikbaar op GitHub.


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