Java crea nuovo file

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.

  1. 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 metodo createNewFile() per creare un nuovo file in Java. Il metodo createNewFile() restituisce true se viene creato un nuovo file e false 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 sistema file.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 che createNewFile() cerca semplicemente di creare il file e qualsiasi directory, sia assoluta che relativa, deve essere già presente, altrimenti genera un’eccezione IOException. 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() restituisce false, 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
    
  2. 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();
    
  3. 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