> 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-csv.md).

# Ficheiros CSV

Un **ficheiro CSV** (valores separados por comas) é un tipo de ficheiro de texto plano que almacena datos nun formato de táboa, onde cada liña representa unha fila e os valores dentro de cada fila están separados por comas ou outros delimitadores. O seu propósito principal é permitir o intercambio e a transferencia de datos entre diferentes programas de software, debido á súa simplicidade e ampla compatibilidade para importar e exportar información.

```
Nome,Idade,Cidade
Ana,25,Santiago
Brais,30,A Coruña
Clara,28,Vigo
```

## Lectura de ficheiros CSV

Ler ficheiros CSV en Java pode facerse de varios xeitos, dependendo de como queres procesar os datos. O formato CSV (*Comma Separated Values*) é un formato simple que contén datos separados por comas (ou outro delimitador, como punto e coma, dependendo do caso). Existen varias librarías e técnicas que podes usar para ler arquivos CSV en Java.

O seguinte exemplo, mostra un método manual utilizando clase `BufferedReader`<i class="fa-copy">:copy:</i> para ler o ficheiro liña a liña e a función `String.split()`<i class="fa-copy">:copy:</i> para separar os valores de cada liña baseada no delimitador (coma, por exemplo).

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

public class LerCSVExemplo {
    public static void main(String[] args) {
        String rutaFicheiro = "exemplo.csv";

        // Try con resources
        try (BufferedReader reader = new BufferedReader(new FileReader(rutaFicheiro))) {
            String liña;
            while ((liña = reader.readLine()) != null) {
                //OLLO, ESTE EXEMPLO NON XESTIONA A CABECEIRA DO FICHEIRO
                // Separar a liña en campos usando a coma como delimitador
                String[] campos = liña.split(",");
                
                //Realizar operaciones cos elementos de cada liña
                
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```

## Escritura de ficheiros CSV

Do xeito similar podemos utilizar as clases estándar de Java como `BufferedWriter` ou `FileWriter` para escribir un ficheiro de formato CSV.

```java
package ficheros;

public class Persoa {

    private String nome;
    private int idade;
    private String cidade;

    public Persoa(String nome, int idade, String cidade) {
        this.nome = nome;
        this.idade = idade;
        this.cidade = cidade;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }
}

```

```java
public class EscribirCSV {
    public static void main(String[] args) {
        // Crear array de persoas
        Persoa[] persoas = new Persoa[3];
        persoas[0] = new Persoa("Ana", 25, "Santiago");
        persoas[1] = new Persoa("Brais", 30, "A Coruña");
        persoas[2] = new Persoa("Clara", 28, "Vigo");

        // Ruta do CSV
        String rutaCSV = "C:\\Users\\iagom\\Desktop\\persoas.csv";
        File fichero = new File(rutaCSV);
        // Escribir CSV
         try (BufferedWriter bw = new BufferedWriter(new FileWriter(fichero))) {
            // Cabecera
            if (!fichero.exists() || fichero.length() == 0)
                writer.write("Nome,Idade,Cidade\n");

            // Datos das persoas
            for (int i = 0; i < persoas.length; i++) {
                Persoa p = persoas[i];
                writer.write(p.nome + "," + p.idade + "," + p.cidade + "\n");
            }

            System.out.println("CSV creado correctamente en: " + rutaCSV);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```


---

# 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-csv.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.
