> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud5-entrada-e-saida-da-informacion/ficheiros/ficheiros-de-texto-lectura-e-escritura/filereader-e-filewriter.md).

# FileReader e FileWriter

**FileReader e FileWriter** son clases básicas de Java para lectura e escritura de caracteres en ficheiros de texto, caracterizándose pola súa simplicidade e baixo nivel de operación. Destacamos:

1. **Sen buffering e ineficientes para volume**: Operan carácter a carácter, o que xera moitas operacións de entrada/saida e as fai pouco axeitadas para ficheiros grandes.
2. **Funcionalidade básica e limitada**: Carecen de métodos para ler liñas, analizar datos ou formatear a saída, traballando só con transferencias brutas de caracteres.
3. **Lixeiros e de baixo nivel**: A súa principal vantaxe é a sinxeleza e o control directo, sendo útiles para ficheiros pequenos ou cando se precisa precisión, e adóitan empregarse como base para clases máis avanzadas.

## FileWriter

A clase `FileWriter`<i class="fa-copy">:copy:</i> permite escribir caracteres nun ficheiro e texto. Pode escribir dende cero ou engadir texto a un ficheiro existente. No seu construtor podemos pasarlle o *path* nun `String`<i class="fa-copy">:copy:</i> ou un obxecto `File`. É opcional un segundo parámetro no construtor que indica se se engade ao final (se é verdadeiro) ou se escribe dende o comezo (se é falso).

{% hint style="warning" %}
**Documentación Oficial:** <https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/FileWriter.html>
{% endhint %}

| Método                                                  | Descrición                              |
| ------------------------------------------------------- | --------------------------------------- |
| `void write(String texto)`<i class="fa-copy">:copy:</i> | Escribe texto no ficheiro.              |
| `void close()`<i class="fa-copy">:copy:</i>             | Pecha o ficheiro para liberar recursos. |

**Exemplo**:

```java
import java.io.FileWriter;
import java.io.IOException;

public class ExemploFileWriter {
    public static void main(String[] args) {
        String path = "C:\\Users\\...\\Desktop\\exemplo.txt";
        try {
            FileWriter escritor = new FileWriter(path);
            escritor.write("Ola, este é un exemplo de escritura en ficheiro.\n");
            escritor.write("Segunda liña de texto.\n");
            escritor.close();
            System.out.println("Texto escrito correctamente.");
        } catch (IOException e) {
            System.out.println("Error ao escribir o ficheiro");
        }
    }
}
```

## FileReader

A clase `FileReader`<i class="fa-copy">:copy:</i> permite ler ficheiros de texto carácter por carácter. No seu construtor podemos pasarlle o *path* nun `String`<i class="fa-copy">:copy:</i> ou un obxecto `File`.

{% hint style="warning" %}
**Documentación Oficial:** [**https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/FileReader.html**](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/FileReader.html)
{% endhint %}

| **Método**                                                                   | **Descrición**                                                                                                                               |
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `int read()`<i class="fa-copy">:copy:</i>                                    | Lee un só carácter do ficheiro e devolve o seu valor en código ASCII. Se non hai máis datos, devolve `-1`.                                   |
| `int read(char[] cbuf, int offset, int length)`<i class="fa-copy">:copy:</i> | Le ata `length`<i class="fa-copy">:copy:</i> caracteres e gárdaos no array `cbuf` comezando no índice `offset`<i class="fa-copy">:copy:</i>. |
| `void close()`<i class="fa-copy">:copy:</i>                                  | Pecha o ficheiro e libera os recursos asociados.                                                                                             |

**Exemplo**

```java
import java.io.FileReader;
import java.io.IOException;

public class ExemploFileReader {
    public static void main(String[] args) {
        String path = "C:\\Users\\...\\Desktop\\exemplo.txt";
        try (FileReader lector = new FileReader(path)) {
            int caracter;
            while ((caracter = lector.read()) != -1) {
                System.out.print((char) caracter);
            }
        } catch (IOException e) {
            System.out.println("Erro ao ler o ficheiro.");
        }
    }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud5-entrada-e-saida-da-informacion/ficheiros/ficheiros-de-texto-lectura-e-escritura/filereader-e-filewriter.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
