Java crea un nuevo archivo

Creación de un archivo es una operación de entrada/salida muy común. Hoy veremos diferentes formas de crear un archivo en Java.

Java crear archivo

Hay tres métodos populares para crear un archivo en Java. Veámoslos uno por uno.

  1. File.createNewFile()

    java.io.File se puede utilizar para crear un nuevo archivo en Java. Cuando inicializamos un objeto File, proporcionamos el nombre del archivo y luego podemos llamar al método createNewFile() para crear un nuevo archivo en Java. El método createNewFile() de la clase File devuelve true si se crea el nuevo archivo y false si el archivo ya existe. Este método también lanza java.io.IOException cuando no puede crear el archivo. Los archivos creados están vacíos y tienen cero bytes. Al crear el objeto File pasando el nombre del archivo, puede ser con ruta absoluta, o podemos proporcionar solo el nombre del archivo o proporcionar la ruta relativa. Para una ruta no absoluta, el objeto File intenta ubicar archivos en el directorio raíz del proyecto. Si ejecutamos el programa desde la línea de comandos, para la ruta no absoluta, el objeto File intenta ubicar archivos desde el directorio actual. Al crear la ruta del archivo, debemos usar la propiedad del sistema file.separator para que nuestro programa sea independiente de la plataforma. Veamos diferentes escenarios con un programa Java simple para crear un nuevo archivo en Java.

    package com.journaldev.files;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CreateNewFile {
    
        /**
         * Esta clase muestra cómo crear un archivo en Java
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            String fileSeparator = System.getProperty("file.separator");
            
            //nombre de archivo absoluto con ruta
            String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt";
            File file = new File(absoluteFilePath);
            if(file.createNewFile()){
                System.out.println(absoluteFilePath+" Archivo creado");
            }else System.out.println("Archivo "+absoluteFilePath+" ya existe");
            
            //solo nombre de archivo
            file = new File("file.txt");
            if(file.createNewFile()){
                System.out.println("file.txt Archivo creado en el directorio raíz del proyecto");
            }else System.out.println("Archivo file.txt ya existe en el directorio raíz del proyecto");
            
            //ruta relativa
            String relativePath = "tmp"+fileSeparator+"file.txt";
            file = new File(relativePath);
            if(file.createNewFile()){
                System.out.println(relativePath+" Archivo creado en el directorio raíz del proyecto");
            }else System.out.println("Archivo "+relativePath+" ya existe en el directorio raíz del proyecto");
        }
    
    }
    

    Cuando ejecutamos el programa anterior desde Eclipse IDE por primera vez, se produce la siguiente salida.

    /Users/pankaj/file.txt Archivo creado
    file.txt Archivo creado en el directorio raíz del proyecto
    Excepción en el hilo "main" 
    java.io.IOException: No such file or directory
    	at java.io.UnixFileSystem.createFileExclusively(Native Method)
    	at java.io.File.createNewFile(File.java:947)
    	at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    

    Para la ruta relativa, se lanza IOException porque el directorio tmp no está presente en la carpeta raíz del proyecto. Entonces está claro que createNewFile() simplemente intenta crear el archivo y cualquier directorio ya sea absoluto o relativo debe estar presente, de lo contrario lanza IOException. Así que creé el directorio “tmp” en la carpeta raíz del proyecto y ejecuté el programa nuevamente, aquí está la salida.

    Archivo /Users/pankaj/file.txt ya existe
    Archivo file.txt ya existe en el directorio raíz del proyecto
    tmp/file.txt Archivo creado en el directorio raíz del proyecto
    

    Los dos primeros archivos ya existían, así que createNewFile() devuelve false, el tercer archivo se creó en el directorio tmp y devuelve true. Cualquier ejecución posterior da como resultado la siguiente salida:

    Archivo /Users/pankaj/file.txt ya existe
    Archivo file.txt ya existe en el directorio raíz del proyecto
    Archivo tmp/file.txt ya existe en el directorio raíz del proyecto
    

    Si ejecutas el mismo programa desde el directorio de clases del terminal, aquí está la salida.

    //primera ejecución desde el directorio de salida de clases
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Archivo /Users/pankaj/file.txt ya existe
    file.txt Archivo creado en el directorio raíz del proyecto
    Excepción en el hilo "main" java.io.IOException: No such file or directory
    	at java.io.UnixFileSystem.createFileExclusively(Native Method)
    	at java.io.File.createNewFile(File.java:947)
    	at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
    
    //el directorio tmp no existe, creémoslo
    pankaj:~/CODE/JavaFiles/bin$ mkdir tmp
    
    //segunda ejecución
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Archivo /Users/pankaj/file.txt ya existe
    Archivo file.txt ya existe en el directorio raíz del proyecto
    tmp/file.txt Archivo creado en el directorio raíz del proyecto
    
    //tercera y sucesivas ejecuciones
    pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile
    Archivo /Users/pankaj/file.txt ya existe
    Archivo file.txt ya existe en el directorio raíz del proyecto
    Archivo tmp/file.txt ya existe en el directorio raíz del proyecto
    
  2. FileOutputStream.write(byte[] b)

    Si quieres crear un archivo nuevo y al mismo tiempo escribir algunos datos en él, puedes usar el método write de FileOutputStream. A continuación, se muestra un fragmento de código simple para mostrar su uso. Las reglas para la ruta absoluta y la ruta relativa discutidas anteriormente también son aplicables en este caso.

    String fileData = "Pankaj Kumar";
    FileOutputStream fos = new FileOutputStream("name.txt");
    fos.write(fileData.getBytes());
    fos.flush();
    fos.close();
    
  3. Java NIO Files.write()

    Podemos usar la clase Java NIO Files para crear un nuevo archivo y escribir algunos datos en él. Esta es una buena opción porque no tenemos que preocuparnos por cerrar los recursos de E/S.

    String fileData = "Pankaj Kumar";
    Files.write(Paths.get("name.txt"), fileData.getBytes());
    

Eso es todo para crear un nuevo archivo en el programa Java.

Puedes ver más ejemplos básicos de Java en nuestro Repositorio de GitHub.

Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file