Académique Documents
Professionnel Documents
Culture Documents
IF3000 Programación II
M.c.i. Wendy Ramírez
M.c.i. Alejandro Ulate
Repaso Archivos
Constructores:
• RandomAccessFile(File f, String modoAcceso)
• RandomAccessFile(String nombreArchivo, String modoAcceso)
modoAcceso puede ser: “r” (sólo lectura) o “rw” (lectura y
escritura).
Métodos:
• void seek(long posicion): Sitúa el puntero de lectura/escritura
en la posición indicada, desde el principio del fichero.
• long getFilePointer(): Devuelve la posición actual del puntero
de lectura/escritura.
• int skipBytes(int desplazamiento): Desplaza el puntero desde
la posición actual, el número de bytes indicado por
desplazamiento
• long length(): Devuelve la longitud o tamaño del fichero en
bytes
Ejemplo escritura/lectura
Serialización
Escritura de datos
ContactoOutput salida;
salida = new ContactoOutput();
salida.abrir();
salida.escribir( contacto1 );
salida.escribir( contacto2 );
salida.cerrar();
Uso
Lectura de datos
Contacto contacto;
ContactoInput entrada;
entrada = new ContactoInput();
entrada.abrir();
do {
contacto = entrada.leer();
System.out.println(contacto);
} while (contacto!=null);
entrada.cerrar();
import java.io.*;
import java.text.DateFormat;
public class Registro extends Contacto
{
public final static int DIM = 364;
// Lectura
public void read (RandomAccessFile file) throws IOException, java.text.ParseException
{
DateFormat df;
setNombre ( readString (file, 32) );
setTelefono ( readString (file, 16) );
setEmail ( readString (file, 32) );
setDireccion ( readString (file, 64) );
df = DateFormat.getDateInstance(DateFormat.LONG);
setNacimiento ( df.parse(readString(file,32)) );
setGrupo(file.readInt());
setDeuda(file.readDouble());
}
Clase Registro (cont.)
// Escritura
public void write (RandomAccessFile file) throws IOException
{
DateFormat df;
writeString (file, getNombre(), 32);
writeString (file, getTelefono(), 16);
writeString (file, getEmail(), 32);
writeString (file, getDireccion(), 64);
df = DateFormat.getDateInstance(DateFormat.LONG);
writeString (file, df.format(getNacimiento()), 32);
file.writeInt ( getGrupo() );
file.writeDouble ( getDeuda() );
}
Clase Registro (cont.)
import java.io.*;
public class Contactos
{
// Fichero de acceso aleatorio
private RandomAccessFile file;
// Apertura del fichero
public void abrir() throws IOException
{
file = new RandomAccessFile("clientes.dat","rw");
}
// Cierre del fichero
public void cerrar() throws IOException
{
if (file!=null)
file.close();
}
Clase Contactos (cont.)
// Escribir un registro
// en la posición actual del cursor
public void escribir (Registro registro) throws IOException
{
if (file!=null)
registro.write(file);
}