Creare un file è un’operazione di IO molto comune. Oggi esamineremo diversi modi per creare un file in Java.
Java crea file
Ci sono tre metodi popolari per creare un file in Java. Esaminiamoli uno per uno.
-
File.createNewFile()
La classe
java.io.File
può essere utilizzata per creare un nuovo file in Java. Quando iniziamo l’oggetto File, forniamo il nome del file e poi possiamo chiamare il metodocreateNewFile()
per creare un nuovo file in Java. Il metodocreateNewFile()
restituiscetrue
se viene creato un nuovo file efalse
se il file esiste già. Questo metodo genera anche un’eccezione java.io.IOException quando non è in grado di creare il file. I file creati sono vuoti e hanno dimensione zero byte. Quando creiamo l’oggetto File passando il nome del file, possiamo fornire il percorso assoluto, o possiamo fornire solo il nome del file o possiamo fornire il percorso relativo. Per un percorso non assoluto, l’oggetto File cerca i file nella directory radice del progetto. Se eseguiamo il programma dalla riga di comando, per il percorso non assoluto, l’oggetto File cerca i file dalla directory corrente. Durante la creazione del percorso del file, dovremmo utilizzare la proprietà di sistemafile.separator
per rendere il nostro programma indipendente dalla piattaforma. Vediamo diversi scenari con un semplice programma Java per creare un nuovo file in Java.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * Questa classe mostra come creare un File in Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //nome del file assoluto con percorso String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" File creato"); }else System.out.println("Il file "+absoluteFilePath+" esiste già"); //solo nome del file file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt File creato nella directory radice del progetto"); }else System.out.println("Il file file.txt esiste già nella directory radice del progetto"); //percorso relativo String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" File creato nella directory radice del progetto"); }else System.out.println("Il file "+relativePath+" esiste già nella directory radice del progetto"); } }
Quando eseguiamo il programma sopra da Eclipse IDE per la prima volta, viene prodotto l’output seguente.
/Users/pankaj/file.txt File creato file.txt File creato nella directory radice del progetto Eccezione nel thread "main" java.io.IOException: File o directory non esistenti at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
Per il percorso relativo, viene generata un’IOException perché la directory
tmp
non è presente nella cartella radice del progetto. Quindi è chiaro checreateNewFile()
cerca semplicemente di creare il file e qualsiasi directory, sia assoluta che relativa, deve essere già presente, altrimenti genera un’eccezioneIOException
. Quindi ho creato la directory “tmp” nella radice del progetto ed ho eseguito nuovamente il programma, ecco l’output.Il file /Users/pankaj/file.txt esiste già Il file file.txt esiste già nella directory radice del progetto tmp/file.txt File creato nella directory radice del progetto
I primi due file erano già presenti, quindi
createNewFile()
restituiscefalse
, il terzo file è stato creato nella directory tmp e restituisce true. Qualsiasi esecuzione successiva produce il seguente output:Il file /Users/pankaj/file.txt esiste già Il file file.txt esiste già nella directory radice del progetto Il file tmp/file.txt esiste già nella directory radice del progetto
Se esegui lo stesso programma dalla directory delle classi del terminale, ecco l’output.
//prima esecuzione dalla directory delle classi di output pankaj:~/CODICE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Il file /Users/pankaj/file.txt esiste già file.txt File creato nella directory radice del progetto Eccezione nel thread "main" java.io.IOException: File o directory non esistenti at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //la directory tmp non esiste, creiamola pankaj:~/CODICE/JavaFiles/bin$ mkdir tmp //seconda esecuzione pankaj:~/CODICE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Il file /Users/pankaj/file.txt esiste già Il file file.txt esiste già nella directory radice del progetto tmp/file.txt File creato nella directory radice del progetto //terza e successive esecuzioni pankaj:~/CODICE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Il file /Users/pankaj/file.txt esiste già Il file file.txt esiste già nella directory radice del progetto Il file tmp/file.txt esiste già nella directory radice del progetto
-
FileOutputStream.write(byte[] b)
Se vuoi creare un nuovo file e contemporaneamente scrivere dei dati al suo interno, puoi utilizzare il metodo write di FileOutputStream. Di seguito è riportato un semplice frammento di codice per mostrarne l’utilizzo. Le regole per il percorso assoluto e relativo discusse in precedenza sono applicabili anche in questo caso.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
Possiamo utilizzare la classe Java NIO Files per creare un nuovo file e scriverci dei dati. Questa è un’ottima opzione perché non dobbiamo preoccuparci della chiusura delle risorse IO.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
Ecco tutto per la creazione di un nuovo file nel programma Java.
Puoi controllare altri esempi di core Java nel nostro Repository GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file