Prácticas de ficheros en Java
En las prácticas realizadas de ficheros en Java se han utilizado clases y métodos relacionados con estos, como por ejemplo, la clase File y métodos como getName() y otros métodos para realizar comprobaciones con ficheros como exists() o canRead().
El objetivo principal de estas dos prácticas era poner en práctica estas clases y métodos de los ficheros en Java, para ello se pedía por ejemplo crear ficheros en determinados directorios, rellenar ficheros creados con contenido y mostrar el contenido de los ficheros creados anteriormente.
En la primera práctica se pedía generalmente crear ficheros, rellenarlos y mostrarlos, además en algún caso introducir argumentos de entrada para crear ficheros a partir de estos.
La segunda práctica profundizaba más en los ficheros en Java y los ArrayList en conjunto con estos utilizando ArrayList para almacenar contenido de los archivos. Además, en esta práctica utilizamos más métodos relacionados con ficheros y directorios en Java, para comprobar si es un directorio o crear ficheros mediante el método createNewFile().
Por último, en esta práctica también hemos realizado clases en las que conseguimos trasladar la información de un fichero a otro y, además, debíamos sobrescribir alguna línea del contenido del fichero o incluso eliminarla.
Clases para trabajar con ficheros en Java
Para trabajar con ficheros se utilizan principalmente 5 clases:
Clase File: esta clase se encarga de cargar el fichero con el que vamos a trabajar
File fichero = new File("fichero.txt");
http://docs.oracle.com/javase/6/docs/api/java/io/File.html
Clase FileWriter: esta clase crea el flujo de escritura del fichero, a partir de esta clase se escribe texto en el fichero.
FileWriter fw = new FileWriter(fichero);
http://docs.oracle.com/javase/6/docs/api/java/io/FileWriter.html
Clase PrintWriter: esta clase permite convertir a texto variables y objetos para escribirlos en un Writer.
PrintWriter pw = new PrintWriter(fw);
http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html
Clase FileReader: esta clase se utiliza para leer los caracteres de un fichero
FileReader fr = new FileReader(fichero);
http://docs.oracle.com/javase/6/docs/api/java/io/FileReader.html
Clase BufferedReader: esta clase lee texto línea a línea de un Reader, permite leer caracteres, arrays y lineas.
BufferedReader br = new BufferedReader(fr);
http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html
Clase RandomAccessFile
Los ficheros de acceso aleatorio permiten elegir una situación dentro del fichero desde la cual queremos trabajar, sin necesidad de recorrer todo el fichero primero. Para esto necesitamos la clase RandomAccessFile, que proporciona métodos de lectura y escritura para estos ficheros (DataInput y Data Output).
Ejemplo: Programa Java que pide un número entero por teclado y lo añade al final de un fichero binario enteros.dat que contiene números enteros. El programa utiliza un método mostrarFichero() que se llama dos veces. La primera muestra el contenido del fichero antes de añadir el nuevo número y la segunda llamada muestra el fichero después de añadirlo.
import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Random1 {
static Scanner sc = new Scanner(System.in);
static RandomAccessFile fichero = null;
public static void main(String[] args) {
int numero;
try {
//se abre el fichero para lectura y escritura
fichero = new RandomAccessFile("/ficheros/enteros.dat", "rw");
mostrarFichero(); //muestra el contenido original del fichero
System.out.print("Introduce un número entero para añadir al final del fichero: ");
numero = sc.nextInt(); //se lee el entero a añadir en el fichero
fichero.seek(fichero.length()); //nos situamos al final del fichero
fichero.writeInt(numero); //se escribe el entero
mostrarFichero();//muestra el contenido del fichero después de añadir el número
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
System.out.println(ex.getMessage());
} finally {
try {
if (fichero != null) {
fichero.close();
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
public static void mostrarFichero() {
int n;
try {
fichero.seek(0); //nos situamos al principio
while (true) {
n = fichero.readInt(); //se lee un entero del fichero
System.out.println(n); //se muestra en pantalla
}
} catch (EOFException e) {
System.out.println("Fin de fichero");
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
Fuentes:
Deja un comentario