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

# Ficheiros

<figure><img src="/files/r0oZeBcbph2uLQ8CtRk9" alt=""><figcaption></figcaption></figure>

## Ficheiros

Un **ficheiro** é unha estrutura de almacenamento de datos que garda de maneira persistente nun dispositivo de almacenamento secundario un conxunto de datos que teñen unha relación lóxica entre si. De maneira xeral, os ficheiros están compostos por **rexistros**, que son as estruturas de datos máis simples de acceso ó ficheiro, e que pola súa vez están formados por **campos**, que contén información sobre unha propiedade do ficheiro ou dun rexistro

```json
[
  {
    "id": 1,
    "nombre": "Ana García",
    "departamento": "Ventas",
    "salario": 35000
  },
  {
    "id": 2,
    "nombre": "Carlos López",
    "departamento": "TI",
    "salario": 45000
  },
  {
    "id": 3,
    "nombre": "María Rodríguez",
    "departamento": "Recursos Humanos",
    "salario": 38000
  }
]
```

### Características dos ficheiros <a href="#caracteristicas-dos-ficheiros" id="caracteristicas-dos-ficheiros"></a>

As características xerais de uso dos ficheiros son:

* Almacenanse en **dispositivos de memora externa**, onde a información se almacena de forma permanente e non volátil
* Os ficheiros son **independentes dos programas**: Un ficheiro pode ser accedido por múltiples programas e a eliminación dun ficheiro non afecta o programa
* Traballan con enderezos físicos e lóxicos.
  * **Enderezo lóxico**: Posición relativa que ocupa o rexistro no ficheiro
  * **Enderezo físico:** Posición real que ocupa o rexistro no dispositivo de memoria secundaria no que está almacenado
* O **sistema de ficheiros** xestiona a traducción das direccións fisicas a lóxicas, ademais de almacenar información adicional como: data de creación, modificación, ultimo acceso, só lectura ou oculto, ...

### Tipos de acceso <a href="#tipos-de-acceso" id="tipos-de-acceso"></a>

<figure><img src="/files/PHrrZPeGS8suTKkM8lD5" alt=""><figcaption></figcaption></figure>

* **Acceso secuencial:** Accede aos datos nunha orde predeterminada de maneira secuencial ata atopar o dato que busca. O tempo de acceso depende da situación do dato
* **Acceso aleatorio:** Permite o acceso a unha posición de memoria a través do seu enderezo e cun tempo de acceso fixo, independentemente da súa posición. Este acceso require memoria secundaria con acceso aleatorio, como é o caso dos discos SSD.

### Operacións sobre ficheiros <a href="#operacions-sobre-ficheiros" id="operacions-sobre-ficheiros"></a>

**Operacións básicas**

* **Creación:** É tarefa do sistema operativo, e é posible que sexa necesario indicar información adicional como o tipo de ficheiro ou atributos (encriptado, oculto, ...)
* **Borrado:** Pódese implementar de dúas formas:
  * Lóxico: Marca mediante un flag para borrado, pero permanecen en disco ata que se sobrescriban
  * Físico: Os datos do ficheiro sobrescríbense con 0s ou patróns aleatorios
* **Apertura e peche:** O sistema operativo crea un dispositivo lóxico e un buffer de E/S para traballar. No peche volca os datos do buffer pendentes no ficheiro e libera recursos.
* **Actualización:** Modifícase a información que contén e a súa implementación é moi dependente da organización lóxica do ficheiro. Tres operacións principais para incluír novos rexistros (inserir), para modificar ou para borrar novos rexistros. O borrado ao igual que no caso dos ficheiros pode ser físico ou lóxico
* **Consulta**: Recupera a información dun ou varios rexistros

**Operacions avanzadas**

* **Ordenación:** Organiza os seus compoñentes con base no valor dun dos campos dos seus rexistros
* **Compactación**: Reordenación física dos rexistros dun ficheiro para eliminar ocos libres por borrado de ficheiros
* **Compresión:** Reordenación do contido do ficheiro para reducir o seu tamaño. Modifica contido e estrutura dos rexistros
* **Cifrado:** Encriptación do contido do ficheiro. Habitualmente modifica contido e estrutura do ficheiro
* **Fusión:** Creación dun novo ficheiro a partir de dous existentes. Pode conte-la orde anterior ou reordenar contido
* **Partición:** Operación inversa á anterior. Divide o ficheiro en dous.

### Clasificación dos ficheiros <a href="#clasificacion-dos-ficheiros" id="clasificacion-dos-ficheiros"></a>

* **Ficheiros de texto:** É un ficheiro no que os datos están representados mediante caracteres alfanuméricos, e poden ser leídos ou modificados a través dun editor de texto (txt, csv, xml, json, xls...)
* **Ficheiros binarios:** É un ficheiro que contén información codificada en formato binario para almacenamento e procesamento do ordenador (.png, .exe)

### Codificación de ficheiros de texto <a href="#codificacion-de-ficheiros-de-texto" id="codificacion-de-ficheiros-de-texto"></a>

A codificación de caracteres en arquivos de texto determina cómo se representan os caracteres e símbolos no arquivo. Diferentes codificacións poden ser utilizadas para admitir diferentes conxuntos de caracteres e linguaxes:

* **ASCII (American Standard Code for Information Interchange)**: Esta codificación utiliza 7 bits para representar caracteres alfanuméricos e símbolos comúns en inglés, como letras, números e algúns signos de puntuación. É unha codificación antiga e limitada ós caracteres en inglés
* **UTF-8 (Unicode Transformation Format - 8 bits):** É unha codificación de caracteres Unicode amplamente utilizada. Pode representar caracteres de múltiples idiomas e símbolos utilizando un esquema de codificación variable que varía de 8 a 32 bits por carácter. UTF-8 é compatible coa maioría dos idiomas e é a codificación de texto predeterminada en moitos sistemas e aplicacións
* **UTF-16:** Outra codificación Unicode que utiliza 16 bits por carácter. É máis eficiente para idiomas que usan caracteres fóra do rango ASCII, pero pode requirir máis espazo de almacenamento que UTF-8
* **ISO-8859-1 (Latin-1)**: Esta codificación utilízase principalmente en idiomas europeos occidentais e utiliza 8 bits para representar caracteres. É unha codificación máis limitada en comparación con UTF-8, xa que non admite caracteres de moitos idiomas asiáticos e non europeos
* **UTF-32:** Utiliza 32 bits por carácter e é adecuada para admitir todos os caracteres Unicode. Sen embargo, tende a ser ineficiente en canto ó espacio de almacenamento.


---

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