Java FileWriter

La clase Java FileWriter, java.io.FileWriter, permite escribir caracteres en un archivo. En ese sentido, el escrito de archivos Java funciona muy parecido al FileOutputStream, excepto que a FileOutputStream está basado en bytes, mientras que a FileWriter está basado en caracteres. El FileWriter está destinado a escribir texto, en otras palabras. Un carácter puede corresponder a uno o más bytes, dependiendo del esquema de codificación de caracteres en uso. La clase Java FileWriter es una subclase de la clase Java Writer, por cierto.

Ejemplo de escritura de archivos

Aquí hay un ejemplo simple de Java FileWriter :

Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();

Nota: El manejo adecuado de excepciones se ha omitido aquí en aras de la claridad. Para obtener más información sobre el manejo correcto de excepciones, vaya a Manejo de excepciones de Java IO.

El FileWriter también tiene otros constructores, lo que le permite especificar el archivo en el que escribir de diferentes maneras. Mira en el JavaDoc oficial para obtener información más detallada.

Sobrescribir vs Anexar el Archivo

Al crear un Java FileWriter usted puede decidir si desea sobrescribir cualquier archivo existente con el mismo nombre, o si desea anexar a un archivo existente. Usted decide eso eligiendo qué constructor FileWriter utiliza.

El constructor FileWriter que toma solo un parámetro, el nombre del archivo, sobrescribirá cualquier archivo existente:

Writer fileWriter = new FileWriter("c:\data\output.txt");

FileWriter tiene un constructor que toma 2 parámetros también: El nombre del archivo y un booleano. El booleano indica si se debe añadir o sobrescribir un archivo existente. Aquí hay dos ejemplos de Java FileWriter que muestran que:

Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file

Codificación de caracteres para escribir archivos

FileWriter asume que desea codificar los bytes en el archivo utilizando la codificación de caracteres predeterminada para el equipo en el que se ejecuta la aplicación. Esto puede no ser siempre lo que quieres, ¡y no puedes cambiarlo!

Si desea especificar un esquema de codificación de caracteres diferente, no utilice un FileWriter. Utilice un OutputStreamWriter en un FileOutputStream en su lugar. OutputStreamWriter le permite especificar el esquema de codificación de caracteres que se utilizará al escribir bytes en el archivo subyacente.

write (int)

El método Java FileWriter write(int) escribe los 16 bits inferiores de int en el destino al que FileWriter está conectado, como un solo carácter. Aquí hay un ejemplo de escribir un solo carácter en un Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');

write (char)

El Java FileWriter también tiene un método write(char) que puede escribir una matriz de caracteres al destino al que FileWriter está conectado. El método write(char) devuelve el número de caracteres realmente escritos en el FileWriter. Aquí hay un ejemplo de escritura de una matriz de caracteres en un Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);

Rendimiento de escritura

Es más rápido escribir una matriz de caracteres en un escritor de archivos Java que escribir un carácter a la vez. El aumento de velocidad puede ser bastante significativo, hasta 10 veces mayor o más. Por lo tanto, se recomienda utilizar los métodos write(char) siempre que sea posible.

El aumento de velocidad exacto que obtiene depende del sistema operativo subyacente y del hardware del equipo en el que ejecuta el código Java. El aumento de velocidad depende de problemas como la velocidad de la memoria, la velocidad del disco duro y los tamaños de búfer, etc.

Almacenamiento en búfer transparente a través de BufferedWriter

Puede obtener almacenamiento en búfer transparente de bytes escritos en un Java FileWriter envolviéndolo en un Java BufferedWriter . Todos los bytes escritos en BufferedWriter primero se almacenarán en búfer dentro de una matriz de bytes interna en BufferedWriter. Cuando el búfer está lleno, el búfer se descarga al FileWriter subyacente a la vez. Aquí hay un ejemplo de envolver un Java FileWriter en un BufferedWriter:

int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );

Puedes leer más sobre BufferedWriter en mi tutorial de BufferedWriter.

flush ()

El método Java FileWriterflush() vacía todos los datos escritos en el FileWriter en el archivo subyacente. Los datos pueden almacenarse en búfer en la memoria del sistema operativo en algún lugar, incluso si su código Java los ha escrito en FileWriter. Llamando a flush() puede asegurarse de que los datos almacenados en búfer se descargarán (escribirán) en el disco. Aquí hay un ejemplo de descarga de datos escritos en un Java FileWriter llamando a su método flush() :

fileWriter.flush();

Cierre de un escritor de archivos

Cuando haya terminado de escribir caracteres en un Java FileWriter, recuerde cerrarlo. Cerrar un FileWriter se hace llamando a su método close(). Así es como se ve cerrar un Java FileWriter :

fileWriter.close();

También puede usar la construcción probar con recursos introducida en Java 7. Aquí le mostramos cómo usar y cerrar un aspecto FileWriter con la construcción probar con recursos:

try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}

Deja una respuesta

Tu dirección de correo electrónico no será publicada.