Manejo de archivos en Java usando FileWriter y FileReader

Las clases Java FileWriter y FileReader se utilizan para escribir y leer datos de archivos de texto (son clases de flujo de caracteres ). Se recomienda no utilizar las clases FileInputStream y FileOutputStream si tiene que leer y escribir información textual, ya que se trata de clases de flujo de bytes.
 

FileWriter
FileWriter es útil para crear un archivo escribiendo caracteres en él. 

  • Esta clase hereda de la clase OutputStream.
  • Los constructores de esta clase asumen que la codificación de caracteres predeterminada y el tamaño de búfer de bytes predeterminado son aceptables. Para especificar estos valores usted mismo, construya un OutputStreamWriter en un FileOutputStream. 
     
  • FileWriter está diseñado para escribir secuencias de caracteres. Para escribir flujos de bytes sin procesar, considere usar un FileOutputStream.
  • FileWriter crea el archivo de salida si aún no está presente.

Constructores: 

  • FileWriter (archivo de archivo): construye un objeto FileWriter dado un objeto de archivo.
  • FileWriter (archivo de archivo, anexo booleano): construye un objeto FileWriter dado un objeto de archivo.
  • FileWriter (FileDescriptor fd): construye un objeto FileWriter asociado con un descriptor de archivo.
  • FileWriter (String fileName): construye un objeto FileWriter con un nombre de archivo.
  • FileWriter (String fileName, Boolean append): construye un objeto FileWriter al que se le asigna un nombre de archivo con un valor booleano que indica si se deben agregar o no los datos escritos.

Métodos: 

  • public void write (int c) lanza IOException: escribe un solo carácter.
  • public void write (char [] revolver) lanza IOException: escribe una array de caracteres.
  • public void write(String str) lanza IOException – Escribe una string.
  • public void write(String str, int off, int len) lanza IOException: escribe una parte de una string. Aquí off es el desplazamiento a partir del cual empezar a escribir caracteres y len es el número de caracteres a escribir.
  • public void flush() lanza IOException vacía la secuencia
  • public void close() lanza IOException , primero vacía la secuencia y luego cierra el escritor.

La lectura y la escritura se realizan carácter por carácter, lo que aumenta el número de operaciones de E/S y afecta el rendimiento del sistema. BufferedWriter se puede usar junto con FileWriter para mejorar la velocidad de ejecución.
El siguiente programa muestra cómo crear un archivo de texto usando FileWriter
 

Java

// Creating a text File using FileWriter
import java.io.FileWriter;
import java.io.IOException;
class CreateFile
{
    public static void main(String[] args) throws IOException
    {
        // Accept a string
        String str = "File Handling in Java using "+
                " FileWriter and FileReader";
 
        // attach a file to FileWriter
        FileWriter fw=new FileWriter("output.txt");
 
        // read character wise from string and write
        // into FileWriter
        for (int i = 0; i < str.length(); i++)
            fw.write(str.charAt(i));
 
        System.out.println("Writing successful");
        //close the file
        fw.close();
    }
}

Lector de archivos

FileReader es útil para leer datos en forma de caracteres de un archivo de ‘texto’. 

  • Esta clase se heredó de la clase InputStreamReader.
  • Los constructores de esta clase asumen que la codificación de caracteres predeterminada y el tamaño de búfer de bytes predeterminado son apropiados. Para especificar estos valores usted mismo, construya un InputStreamReader en un FileInputStream. 
     
  • FileReader está diseñado para leer flujos de caracteres. Para leer flujos de bytes sin procesar, considere usar un FileInputStream.

Constructores: 

  • FileReader (archivo de archivo): crea un FileReader, dado el archivo para leer
  • FileReader (FileDescripter fd): crea un nuevo FileReader, dado el FileDescripter para leer
  • FileReader (String fileName): crea un nuevo FileReader, dado el nombre del archivo para leer

Métodos: 

  • public int read() lanza IOException: lee un solo carácter. Este método se bloqueará hasta que haya un carácter disponible, se produzca un error de E/S o se alcance el final de la transmisión.
  • public int read(char[] cbuff) lanza IOException: lee caracteres en una array. Este método se bloqueará hasta que haya alguna entrada disponible, se produzca un error de E/S o se alcance el final de la transmisión.
  • public abstract int read(char[] buff, int off, int len) lanza IOException: lee caracteres en una parte de una array. Este método se bloqueará hasta que haya alguna entrada disponible, se produzca un error de E/S o se alcance el final de la transmisión. 
    Parámetros: 
    cbuf – Búfer de destino 
    off – Desplazamiento en el que comenzar a almacenar caracteres 
    len – Número máximo de caracteres para leer 
     
  • public void close() lanza IOException y cierra el lector.
  • public long skip(long n) lanza IOException – Salta caracteres. Este método se bloqueará hasta que algunos caracteres estén disponibles, se produzca un error de E/S o se alcance el final de la transmisión. 
    Parámetros: 
    n – El número de caracteres a saltar 

El siguiente programa muestra cómo leer desde el archivo de ‘texto’ usando FileReader
 

Java

// Reading data from a file using FileReader
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
class ReadFile
{
    public static void main(String[] args) throws IOException
    {
        // variable declaration
        int ch;
 
        // check if File exists or not
        FileReader fr=null;
        try
        {
            fr = new FileReader("text");
        }
        catch (FileNotFoundException fe)
        {
            System.out.println("File not found");
        }
 
        // read from FileReader till the end of file
        while ((ch=fr.read())!=-1)
            System.out.print((char)ch);
 
        // close the file
        fr.close();
    }
}

Este artículo es una contribución de Nishant Sharma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *