1. Información general
En este tutorial, aprenderemos y comprendemos la clase FileWriter presente en el paquete java.io.
2. FileWriter
FileWriter es un OutputStreamWriter especializado para escribir archivos de caracteres . No expone ninguna operación nueva, pero funciona con las operaciones heredadas de lasclases OutputStreamWriter y Writer .
Hasta Java 11, FileWriter funcionaba con la codificación de caracteres predeterminada y el tamaño de búfer de bytes predeterminado. Sin embargo, Java 11 introdujo cuatro nuevos constructores que aceptan un juego de caracteres, lo que permite un juego de caracteres especificado por el usuario . Desafortunadamente, todavía no podemos modificar el tamaño del búfer de bytes y está configurado en 8192.
2.1. Creación de instancias de FileWriter
Hay cinco constructores en la clase FileWriter si usamos una versión de Java anterior a Java 11.
Echemos un vistazo a varios constructores:
public FileWriter(String fileName) throws IOException { super(new FileOutputStream(fileName)); } public FileWriter(String fileName, boolean append) throws IOException { super(new FileOutputStream(fileName, append)); } public FileWriter(File file) throws IOException { super(new FileOutputStream(file)); } public FileWriter(File file, boolean append) throws IOException { super(new FileOutputStream(file, append)); } public FileWriter(FileDescriptor fd) { super(new FileOutputStream(fd)); }
Java 11 introdujo cuatro constructores adicionales:
public FileWriter(String fileName, Charset charset) throws IOException { super(new FileOutputStream(fileName), charset); } public FileWriter(String fileName, Charset charset, boolean append) throws IOException { super(new FileOutputStream(fileName, append), charset); } public FileWriter(File file, Charset charset) throws IOException { super(new FileOutputStream(file), charset); } public FileWriter(File file, Charset charset, boolean append) throws IOException { super(new FileOutputStream(file, append), charset); }
2.2. Escribir una cadena en un archivo
Usemos ahora uno de los constructores de FileWriter para crear una instancia de FileWriter y luego escribir en un archivo:
try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) { fileWriter.write("Hello Folks!"); }
Hemos utilizado el constructor de argumento único de FileWriter que acepta un nombre de archivo. Luego usamos la operación write (String str) heredada de la clase Writer . Dado que FileWriter es AutoCloseable , hemos usado try-with-resources para que no tengamos que cerrar FileWriter explícitamente .
Al ejecutar el código anterior, la cadena se escribirá en el archivo especificado:
Hello Folks!
El FileWriter no garantiza si el archivo FileWriterTest.txt estará disponible o ser creado. Depende de la plataforma subyacente.
También debemos tener en cuenta que ciertas plataformas pueden permitir que solo una instancia de FileWriter abra el archivo. En ese caso, los otros constructores de la clase FileWriter fallarán si el archivo involucrado ya está abierto.
2.3. Agregar una cadena a un archivo
A menudo necesitamos agregar datos al contenido existente de un archivo. Veamos ahora un ejemplo de un FileWriter que admite agregar :
try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) { fileWriter.write("Hello Folks Again!"); }
Como podemos ver, hemos utilizado el constructor de dos argumentos que acepta un nombre de archivo y un indicador booleano adjunto . Pasar el indicador adjuntar como verdadero crea un FileWriter que nos permite agregar texto al contenido existente de un archivo .
Al ejecutar el código, tendremos la Cadena adjunta al contenido existente del archivo especificado:
Hello Folks!Hello Folks Again!
3. Conclusión
En este artículo, aprendimos sobre la clase de conveniencia FileWriter y un par de formas en las que se puede crear FileWriter . Luego lo usamos para escribir datos en un archivo.
Como siempre, el código fuente completo del tutorial está disponible en GitHub.