¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Manejo de ficheros de texto
Paquete java.io
Aparte de la entrada y salida estándar representadas por la clase System
mediante in
y out
, tenemos la salida y entrada desde ficheros.
La mayoría de las clases para manejo de ficheros están en el paquete java.io
, y por lo tanto deben ser importadas.
Clase File
La clase File se usa para representar un fichero o directorio desde un programa en Java. Con esta clase no se puede leer ni escribir en él, pero ofrece una serie de métodos interesantes.
Un objeto File es solamente una asociación a un fichero en el sistema; No tiene por qué existir.
Uso de la clase File
Para crear una instancia de File indicamos el nombre del fichero mediante un String:
File fichero = new File(“rutaFichero”);
El nombre del fichero puede estar compuesta simplemente por su nombre (ruta relativa) o por una ruta absoluta. Siempre que indiquemos solo un nombre, se parte del directorio base del proyecto.
Métodos:
Método | Descripción |
---|---|
boolean createNewFile() | Crea el fichero asociado al objeto File. Para poder crearlo, no debe existir |
boolean mkdir() | Crea el directorio asociado al objeto File |
boolean delete() | Elimina el fichero o directorio. Si es un directorio debe estar vacío |
boolean exists() | true si el fichero representado existe |
String getName() | Devuelve el nombre del fichero o directorio |
boolean isDirectory() | true si es un directorio |
boolean isFile() | true si es un fichero |
String getPath() | Devuelve la ruta con la que se creó el objeto |
String getAbsolutePath() | Devuelve la ruta absoluta |
File getParentFile() | Devuelve un objeto File asociado al directorio que contiene el objeto actual |
long length() | Devuelve el tamaño en bytes del fichero, ó 0 si no existe. |
boolean mkdirs() | Crea todos los directorios especificados en la ruta del objeto File, aunque no existan |
boolean renameTo(File dest) | Renombra el fichero |
String[] list() | Devuelve un array con los nombres de los archivos o directorios que contiene el directorio asociado al objeto File. null si no es un directorio |
File fichero = new File(ruta); if(fichero.exists()){ System.out.println("Nombre del archivo " + fichero.getName()); System.out.println("Ruta " + fichero.getPath()); System.out.println("Ruta absoluta" + fichero.getAbsolutePath()); System.out.println("Tamano " + fichero.length()); } File directorio = new File(“src\\directorio1”); directorio.mkdir();
Clase PrintWriter
La clase PrintWriter es una de las más fáciles de usar a la hora de escribir texto en un fichero.
Usa los mismo métodos con los que escribimos por pantalla con System.out
:
Si el fichero no existe, se crea. Si ya existe, se sobrescribe.
//Instanciamos PrintWriter a partir de un objeto File File fichero = new File("fichero.txt"); PrintWriter escritor = new PrintWriter(fichero); //o directamente PrintWriter escritor = new PrintWriter("fichero.txt"); //escribir el contenido de un array de String en fichero for(int i = 0; i < array.length; i++){ escritor.println(array[i]); } //cerramos el PrintWriter escritor.close()
Hay que tener en cuenta que las clases de entrada/salida a fichero pueden lanzar excepciones que debemos de controlar.
Añadir texto a un fichero existente
Siempre que escribamos en un fichero que ya existe, el fichero se sobrescribirá.
PrintWriter no tiene control sobre esto, pero si la clase de la que hereda FileWriter
. En este caso debemos crear un PrintWriter a partir de un FileWriter.
Para añadir texto a un fichero en lugar de sobrescribirlo, indicaremos un segundo parámetro al constructor de FileWriter:
//Indicando true en el constructor de FileWriter, añadimos texto File fichero = new File("fichero.txt"); FileWriter filewriter = new FileWriter(fichero, true); PrintWriter escritor = new PrintWriter(filewriter); //o sin el objeto File FileWriter filewriter = new FileWriter("fichero.txt", true); PrintWriter escritor = new PrintWriter(filewriter);
Leer con Scanner
La clase Scanner permite leer desde distintos flujos de entrada. Habitualmente hemos usado el flujo estándar System.in
, pero también permite leer directamente desde un String, o desde un objeto File
.
En este caso necesitamos siempre un objeto File, pero es la forma más sencilla de leer un fichero de texto.
File fichero = new File("fichero.txt"); Scanner lector = new Scanner(fichero); String cadenaLeida = lector.nextLine(); int enteroLeido = lector.nextInt(); lector.close();
En algunos casos necesitamos leer desde un fichero sin saber cuantas lineas tiene:
File fichero = new File("fichero.txt"); Scanner lector = new Scanner(fichero); //leo una linea, mientras queden lineas en el fichero while(lector.hasNextLine()){ System.out.println(lector.nextLine()); } lector.close()
Otras formas de escribir en fichero
Aunque la clase PrintWriter sea la más sencilla de usar, también podemos necesitar otros modos de escritura:
- FileWriter: la necesitamos para indicar si queremos o no añadir texto a un fichero.
- BufferedWriter: se usa para no escribir contantemente en disco, y utiliza un buffer para almacenar los datos.
Todas las clases se pueden usar de forma conjunta:
FileWriter fw = new FileWriter("fichero.txt",true); BufferedWriter bf = new BufferedWriter(fw); PrintWriter escritor = new PrintWriter(bf); escritor.println("Anado texto a un fichero, y uso buffer de lectura"); escritor.close()
Basta con cerrar el elemento que envuelve a los demás, en este caso PrintWriter.
Otras formas de leer desde fichero
Aparte de la clase Scanner, existen otras clases para leer desde fichero:
FileReader
: permite acceder a un fichero en modo lectura.BufferedReader
: permite usar un buffer de lectura, para evitar el acceso constante a disco.
FileReader fr = new FileReader("fichero.txt"); BufferedReader lector = new BufferedReader(fr); String cadenaLeida = lector.readLine(); while(cadena != null){ System.out.println(cadenaLeida); cadenaLeida = lector.readLine(); } lector.close();
Control de Excepciones
Si hemos trabajado con fichero nos habremos dado cuenta de que lanzan excepciones que debemos de controlar si queremos usar estas clases.
El control de excepciones se puede hacer de muchas formas, pero hay algo que debemos intentar hacer siempre:
asegurarnos de cerrar los recursos abiertos.
© 2025 Fernando Valdeón