Java: crea un file

1. Panoramica

In questo breve tutorial, impareremo come creare un nuovo file in Java, prima utilizzando le classi Files e Path di NIO, poi le classi Java File e FileOutputStream , Google Guava e infine la libreria Apache Commons IO.

Questo articolo fa parte della serie "Java - Back to Basic" qui su Baeldung.

2. Configurazione

Negli esempi, definiremo una costante per il nome del file:

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

E aggiungeremo anche un passaggio di pulizia per assicurarci che il file non esista già prima di ogni test e per eliminarlo dopo l'esecuzione di ogni test:

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

3. Utilizzo di NIO Files.createFile ()

Iniziamo usando il metodo Files.createFile () dal pacchetto Java NIO:

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

Come puoi vedere il codice è ancora molto semplice; ora stiamo usando la nuova interfaccia Path invece del vecchio File .

Una cosa da notare qui è che la nuova API fa buon uso delle eccezioni. Se il file esiste già, non dobbiamo più controllare un codice di ritorno. Invece, otterremo un'eccezione FileAlreadyExistsException :

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

4. Utilizzo di File.createNewFile ()

Vediamo ora come possiamo fare lo stesso usando la classe java.io.File :

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

Notare che il file non deve esistere affinché questa operazione riesca. Se il file esiste, l' operazione createNewFile () restituirà false.

5. Utilizzo di FileOutputStream

Un altro modo per creare un nuovo file è utilizzare java.io.FileOutputStream :

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

In questo caso, viene creato un nuovo file quando istanziamo l' oggetto FileOutputStream . Se esiste già un file con un determinato nome , verrà sovrascritto . Se, tuttavia, il file esistente è una directory o non è possibile creare un nuovo file per qualsiasi motivo, avremo un'eccezione FileNotFoundException .

Inoltre, tieni presente che abbiamo usato un'istruzione try-with-resources per essere sicuri che uno stream sia chiuso correttamente.

6. Utilizzo di Guava

La soluzione Guava per la creazione di un nuovo file è anche una breve riga di comando:

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

7. Utilizzo di Apache Commons IO

La libreria Apache Commons fornisce il metodo FileUtils.touch () che implementa lo stesso comportamento dell'utilità " touch " in Linux.

Pertanto crea un nuovo file vuoto o anche un file e il percorso completo ad esso in un file system:

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

Nota che questo si comporta in modo leggermente diverso rispetto agli esempi precedenti: se il file esiste già, l'operazione non fallisce, semplicemente non fa nulla.

Ed ecco fatto: 4 modi rapidi per creare un nuovo file in Java.

8. Conclusione

In questo articolo, abbiamo esaminato diverse soluzioni per creare un file in Java. Abbiamo utilizzato classi che fanno parte di JDK e librerie esterne.

Il codice per gli esempi è disponibile su GitHub.