jueves, 13 de marzo de 2008

Ejemplo de archivo de e/s en Java

//Ejemplo de lectura escritura de archivo aleatorio
import java.io.*;
class persona{
String rfc;
String nombre;
int edad;
public persona(String r,String n, int e){
rfc=r; nombre=n; edad=e;
}
public void setRfc(String s){rfc=s;}
public void setNombre(String s){nombre=s;}
public void setEdad(int s){edad=s;}
public String getRfc(){return rfc;}
public String getNombre(){return nombre;}
public int getEdad(){return edad;}
}
class listaPersonas{
persona[] lp=new persona[10];
int np=0;
private RandomAccessFile fes;
private int tamReg=60;
public listaPersonas(){
lp[np++]=new persona("rfa","Ana",18);
lp[np++]=new persona("rfy","Yunuen",19);
lp[np++]=new persona("rfr","Ricio",20);
}
public void muestra(){
int i;
for(i=0;i<np;i++){
System.out.println(lp[i].getRfc()+","+lp[i].getNombre());
}
}
public void guardar()throws IOException{
int i,nregs;
File fp=new File("prueba.dat");
if(fp.exists() && !fp.isFile()) throw new IOException(fp.getName()+"Existe y No es archivo");
fes=new RandomAccessFile(fp,"rw");
//redondeamos por arriba por si el ultimo registro noes del tamaño exacto
nregs=(int)Math.ceil((double)fes.length()/(double)tamReg);
for(i=0;i<np;i++){
fes.seek(i*tamReg);
//en el tamaño del registro tome en cuenta que las cadenas que escribe writeUTF
//agrega dos byte que almacenan el tamaño de la cadena
//para garantizar el tamaño de la cadena use:
//lp[i].getRfc().substring(0,20); para una cadena de 20 p ej.
fes.writeUTF(lp[i].getRfc());
fes.writeUTF(lp[i].getNombre());
fes.writeLong(lp[i].getEdad());
}
fes.close();
}
public void leerArchivo()throws IOException{
int i,nregs;
File fp=new File("prueba.dat");
if(fp.exists() && !fp.isFile()) throw new IOException(fp.getName()+"Bo es archivo");
fes=new RandomAccessFile(fp,"rw");
nregs=(int)Math.ceil((double)fes.length()/(double)tamReg);
for(i=0;i<np;i++){
fes.seek(i*tamReg);
System.out.println(fes.readUTF());
System.out.println(fes.readUTF());
System.out.println(fes.readLong());
}
fes.close();
}
}
public class archivo{
public static void main(String args[]){
listaPersonas lp=new listaPersonas();
lp.muestra();
/*
try{
lp.guardar();
}catch(IOException e){
System.out.println("Error de escritura de archivo");
}*/
try{
lp.leerArchivo();
}catch(IOException e){
System.out.println("Error de escritura de archivo");
}

}
}

No hay comentarios: