---
title: Lectura y Escritura de ficheros en Java, con ejemplos
url: https://jarroba.com/lectura-escritura-ficheros-java-ejemplos/
author: Richard [Admin Jarroba]
date: 2015-04-08
modified: 2026-10-21
language: es
license: CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) — attribution: "Lectura y Escritura de ficheros en Java, con ejemplos", Richard [Admin Jarroba], jarroba.com
categories: Lenguajes de Programación
tags: escritura, ficheros, java, lectura
repository: https://github.com/jarroba/Lectura_Escritura_ficheros_java
---

# Lectura y Escritura de ficheros en Java, con ejemplos

> En este tutorial vamos a ver como leer y escribir fichero en Java, dado que es una de las cosas que suele ser muy útil y utilizada a la hora de programar.

El proyecto de este post lo puedes descargar pulsando [AQUI](https://github.com/jarroba/Lectura_Escritura_ficheros_java).

 

En este tutorial vamos a ver como leer y escribir fichero en Java, dado que es una de las cosas que suele ser muy útil y utilizada a la hora de programar. Bien es cierto que es bastante tedioso y largo el código que hay que escribir para hacer la lectura y escritura de fichero debido a que hay que utilizar objetos de clases que no se usan frecuentemente y hay que definir varias [excepciones](https://jarroba.com/excepciones-exception-en-java-con-ejemplos/) (ver tutorial "[Excepciones (Exception) en Java, con ejemplos](https://jarroba.com/excepciones-exception-en-java-con-ejemplos/)") en función de como se haga la lectura y escritura de los ficheros.

 

Aunque la lectura y escritura de ficheros se puede hacer de varias formas, en este tutorial os vamos a dar el código necesario para realizar estas acciones, aunque se puede hacer también de otras formas:

 

### Lectura de Ficheros:

 

Vamos en primer lugar a leer el contenido del siguiente fichero (llamado 'fichero_leer.txt') e imprimir por pantalla lo que leemos:

 

```text

Linea 1
Linea 2
Linea 3
Linea 4
Linea 5
Linea 6
Linea 7
Linea 8
Linea 9
Linea 10
```

 

En primer lugar tenemos que decir la ruta o directorio donde se encuentra el fichero que queremos leer. Si el fichero lo tenemos en la carpeta de nuestro proyecto (como es el caso del proyecto que estamos realizando) solo debemos de poner el nombre del fichero, sino hay que especificar la ruta donde se encuentra el fichero (ejem -> *Windows: c:\\carpeta\……\fichero.txt,* *Linux o Unix: \var\www\……\fichero.txt*). Esto lo hacemos de la siguiente manera:

 

```java

File fichero = new File("fichero_leer.txt");
```

 

Una vez que tenemos el fichero que queremos leer, nos creamos un objeto de la clase «Scanner» e iremos leyendo línea a línea el fichero. A continuación vemos el programa que nos leerá línea a línea el fichero e imprimirá por pantalla línea a línea el contenido del fichero:

 

```java

import java.io.File;
import java.util.Scanner;

public class LecturaFicheros {

	public static void main(String[] args) {

		// Fichero del que queremos leer
		File fichero = new File("fichero_leer.txt");
		Scanner s = null;

		try {
			// Leemos el contenido del fichero
			System.out.println("... Leemos el contenido del fichero ...");
			s = new Scanner(fichero);

			// Leemos linea a linea el fichero
			while (s.hasNextLine()) {
				String linea = s.nextLine(); 	// Guardamos la linea en un String
				System.out.println(linea);      // Imprimimos la linea
			}

		} catch (Exception ex) {
			System.out.println("Mensaje: " + ex.getMessage());
		} finally {
			// Cerramos el fichero tanto si la lectura ha sido correcta o no
			try {
				if (s != null)
					s.close();
			} catch (Exception ex2) {
				System.out.println("Mensaje 2: " + ex2.getMessage());
			}
		}
	}
}
```

 

En el código vemos que nuestro objeto ‘s’ de la clase «Scanner» va posicionándose línea a línea en el fichero y en el bucle «while» le vamos pidiendo la siguiente línea si es que existe.

 

Vemos también en el código como tenemos que definir varias excepciones, por si ocurre alguna de ellas, el programa no pare la ejecución. Por ejemplo vemos al final del código (en el "finally") como independientemente de si ha habido o no error en la lectura del fichero, nos lo cierre.

 

En definitiva aquí os hemos presentado el código para que podáis leer un fichero de texto (en este caso un ‘txt’) línea a línea.

 

### Escritura de Ficheros:

 

Para la escritura de ficheros, vamos a presentar dos formas de hacerlo, una para escribir un fichero sin una codificación determinada y otra para escribirlo con una determinada codificación (en este caso en *UTF-8*).

 

En estos ejemplos vamos a escribir en el fichero (línea a línea) cada uno de los elementos del siguiente array:

 

```java

String[] lineas = { "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "..." };
```

 

La forma más sencilla de hacer esta escritura (haciendo un foreach del array) es la que presentamos a continuación:

 

```java

import java.io.FileWriter;

public class EscrituraFicheros {

	public static void main(String[] args) {

		String[] lineas = { "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "..." };

		/** FORMA 1 DE ESCRITURA **/
		FileWriter fichero = null;
		try {

			fichero = new FileWriter("fichero_escritura.txt");

			// Escribimos linea a linea en el fichero
			for (String linea : lineas) {
				fichero.write(linea + "\n");
			}

			fichero.close();

		} catch (Exception ex) {
			System.out.println("Mensaje de la excepción: " + ex.getMessage());
		}
	}
}
```

 

Como vemos en este programa, solo utilizamos un objeto de la clase "FileWriter" en el que le pasamos el nombre del fichero. Si el fichero no existe nos lo crea. En realidad no solo hay que pasarle el nombre del fichero, sino que hay que pasarle la ruta donde queremos guardar el fichero más el nombre del fichero, aunque si lo hacemos como en el programa, nos guardará el fichero en la carpeta del proyecto.

 

Otra cosa muy importante es que abrimos el fichero y vamos escribiendo en él poco a poco (o elemento a elemento del array) y al final cuando ya hemos escrito todo cerramos el fichero (método «close()»). En realidad a la hora de escribir en un fichero, lo que hacemos es pasarle un determinado contenido (en este caso un String) y este lo escribe en el fichero. Se recomienda que la escritura la hagáis poco a poco ya que si almacenáis en una variable de tipo String el contenido a escribir y luego lo escribís de golpe, os puede dar una excepción de exceso de memoria si lo que tenéis que escribir en el fichero es muy grande; por tanto hacerlo como se os indica aquí y no tendréis ese problema.

 

Como resultado de la ejecución de este programa, tendréis un nuevo fichero llamado "fichero_escritura.txt" con el siguiente contenido:

 

```text

Uno
Dos
Tres
Cuatro
Cinco
Seis
Siete
...
```

 

La segunda forma de escribir es un fichero con una codificación determinada es la que presentamos a continuación:

 

```java

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;

public class EscrituraFicheros {

	public static void main(String[] args) {

		String[] lineas = { "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "..." };

		/** FORMA 2 DE ESCRITURA. Con el fichero codificado en UTF-8 **/
		Writer out = null;
		try {
			out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("fichero_escritura2.txt"), "UTF-8"));
			
			// Escribimos linea a linea en el fichero
			for (String linea : lineas) {
				try {
					out.write(linea+"\n");
				} catch (IOException ex) {
					System.out.println("Mensaje excepcion escritura: " + ex.getMessage());
				}
			}

		} catch (UnsupportedEncodingException | FileNotFoundException ex2) {
			System.out.println("Mensaje error 2: " + ex2.getMessage());
		} finally {
			try {
				out.close();
			} catch (IOException ex3) {
				System.out.println("Mensaje error cierre fichero: " + ex3.getMessage());
			}
		}
	}

}
```

 

Esta forma es un poco más compleja y hay que tratar diferentes excepciones pero nos permite escribir en el fichero con el formato que le especificamos.

 

Como resultado tenemos el mismo contenido que en el fichero anterior pero en este caso con el nombre "fichero_escritura2.txt".
