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.
-
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étodocreateNewFile()
para crear un nuevo archivo en Java. El métodocreateNewFile()
de la clase File devuelvetrue
si se crea el nuevo archivo yfalse
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 sistemafile.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 quecreateNewFile()
simplemente intenta crear el archivo y cualquier directorio ya sea absoluto o relativo debe estar presente, de lo contrario lanzaIOException
. 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()
devuelvefalse
, 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
-
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();
-
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