como puedo borrar y modificar los datos de un archivo (corregir error)

Mike
10 de Junio del 2006
import java.io.*;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.io.Serializable;

class DameTuSonrisa extends JFrame implements ActionListener
{
public JButton agregar,borrar, modificar,INICIOS;
public JTextField mat, nom, adeu,archivoss;
public JTextArea area;
public JLabel matricula, nombre, adeudo;
public JMenu menu, inicio;
RandomAccessFile Archivo;

public DameTuSonrisa()
{
super("Trabajo Final");

Container contenedor = getContentPane();
contenedor.setLayout(new FlowLayout());

agregar=new JButton("Dar de Alta");
agregar.setEnabled(false);
borrar= new JButton("Dar de Baja");
borrar.setEnabled(false);
modificar=new JButton("Hacer Cambios");
modificar.setEnabled(false);
INICIOS=new JButton("Correr el Archivo");
INICIOS.setEnabled(false);

archivoss=new JTextField(45);
contenedor.add(archivoss);
archivoss.setEditable(true);


menu=new JMenu("opciones");
menu.setMnemonic('O');

JMenuItem abrir=new JMenuItem("Abrir Archivo");
abrir.setMnemonic('A');
menu.add(abrir);
abrir.addActionListener(this);

JMenuBar barra=new JMenuBar();
setJMenuBar(barra);
barra.add(menu);

JMenuItem inicio=new JMenuItem("Crear un Archivo");
inicio.setMnemonic('C');
menu.add(inicio);
inicio.addActionListener(this);

barra.add(menu);


matricula=new JLabel("Matricula");
contenedor.add(matricula);
mat=new JTextField(45);
contenedor.add(mat);
mat.setEditable(false); //////
nombre=new JLabel("Nombre");
contenedor.add(nombre);
nom=new JTextField(45);
contenedor.add(nom);
nom.setEditable(false); /////
adeudo=new JLabel("Adeudo");
contenedor.add(adeudo);
adeu=new JTextField(45);
contenedor.add(adeu);
adeu.setEditable(false); ////////

contenedor.add(agregar);
contenedor.add(borrar);
contenedor.add(modificar);
contenedor.add(INICIOS);

area=new JTextArea(50,50);
contenedor.add(area);

agregar.addActionListener(this);
borrar.addActionListener(this);
modificar.addActionListener(this);
abrir.addActionListener(this);
INICIOS.addActionListener(this);

setSize(500,600);
setVisible(true);
}

public void actionPerformed(ActionEvent evento)
{
String accion,a,b,c;
int x,y,z;

accion=evento.getActionCommand();

if(accion.equals("Dar de Alta"))
{
System.out.println("Estamos en agregar ");
agregar();
}
else
//////
if(accion.equals("Crear un Archivo"))
{
System.out.println("Estamos en crear ");
crearArchivo();////YA

}
else
/////////
if(accion.equals("Dar de Baja"))
{
System.out.println("Estamos en Baja ");

borrar();
/* try
{
String nombrearchivo1="";
File CA=new File(archivoss.getText());
boolean AWW =CA.createNewFile();
if(AWW)
{
area.setText(" ");
area.append("ya creaste el archivo"+nombrearchivo1);
}
else
{
area.setText(" ");
area.append("ya creaste el archivo"+nombrearchivo1+" no se puede crear");
}
}
catch(Exception k)
{

}*/
}
else
/*borrar(); */
if(accion.equals("Hacer Cambios"))
{
System.out.println("Estamos en modificar ");
modificar();
}
else
if(accion.equals("Abrir Archivo"))
{
System.out.println("Estamos en abrir ");
abrirArchivo();///YA
apertura();
}
else
{
}
if(accion.equals("Correr el Archivo"))
{
System.out.println("Estamos en correr ");
///////LLAMAR EL METODO
/*nombrearchivo.seek(0);*/

}
else
{
}
}//actionPerformed(ActionEvent evento)
public void apertura()
{
/*int c=0;


nombrearchivo.seek(0);
leer(nombrearchivo,c);*/

}
void abrirArchivo()
{
System.out.println("abrir");
String nombrearchivo;

//FileDialog fd=new FileDialog(new Frame(),"hola",FileDialog.LOAD);
//fd.setVisible(true);
//nombrearchivo=fd.getFile();
JFileChooser SelectorArchivo=new JFileChooser();
SelectorArchivo.setFileSelectionMode(JFileChooser.FILES_ONLY);
int resultado=SelectorArchivo.showSaveDialog(null);
if(resultado==JFileChooser.CANCEL_OPTION)
return;
File nombreArchivo=SelectorArchivo.getSelectedFile();
if(nombreArchivo==null||nombreArchivo.getName().equals(""))
JOptionPane.showMessageDialog(null,"NOMBRE DE ARCHIVO INCORRECTO","NOMBRE DE ARCHIVO INCORRECTO", JOptionPane.ERROR_MESSAGE);

else
{
try
{


Archivo=new RandomAccessFile(nombreArchivo,"rw");
System.out.println("enable");
}// try
catch (IOException excepciones)
{
JOptionPane.showMessageDialog(null,"ERROR AL PROCESAR EL ARCHIVO","ERROR AL PROCESAR EL ARCHIVO",JOptionPane.ERROR_MESSAGE);
System.exit(1);
} // catch
}
}// public static abrirArchivo()
public void crearArchivo()
{
try
{
String nombrearchivo1="";
nombrearchivo1=archivoss.getText();
System.out.println("Vamos a crear "+nombrearchivo1);
File CA=new File(nombrearchivo1);
boolean AWW =CA.createNewFile();
System.out.println("creatNewFile() "+AWW);
if(AWW)
{
area.setText(" ");
area.append("ya creaste el archivo"+nombrearchivo1);
}
else
{
area.setText(" ");
area.append("ya creaste el archivo"+nombrearchivo1+" no se puede crear");
}
Archivo=new RandomAccessFile(CA,"rw");
RegistroAlumnoFile objetoRAF = new RegistroAlumnoFile(0,"Archivo Inicial",0);
objetoRAF.escribir(Archivo,0);

mat.setEditable(true);
nom.setEditable(true);
adeu.setEditable(true);
agregar.setEnabled(true);
borrar.setEnabled(true);
modificar.setEnabled(true);

}
catch(Exception k)
{

}
}
public void agregar()
{

System.out.println("ey agregar");
String a,b,c;

int contador=0;

System.out.println("ya vamos");


RegistroAlumnoFile objeto=new RegistroAlumnoFile();
objeto.leer(Archivo,0);
contador=objeto.getMatricula();
System.out.println("Contador es "+contador);


a=mat.getText();
b=nom.getText();
c=adeu.getText();

int x,i;
double z;

x=Integer.parseInt(a);
z=Double.parseDouble(c);

System.out.println("ejercito");

for(i=1;i<=contador;i++)
{
System.out.println("ya orale");

objeto.leer(Archivo,i);

if(objeto.getMatricula()==x)
{
System.out.println("hollllllaaaaaaaa");
JOptionPane.showMessageDialog(null,"Incorrecto ","No puedes Escribir ya existe esa matricula", JOptionPane.ERROR_MESSAGE);
return;
}
} // for
System.out.println("ya vamos");
contador++;
objeto.leer(Archivo,0);// se lee el contador en la posicion cero
objeto.setMatricula(contador); //se le agrega la informacion al contador en la ultima posicion
objeto.escribir(Archivo,0); // toma el metodo escribir en la posicion cero del contador

objeto.setMatricula(x);//se le da matricula lo que se escribio
objeto.setNombre(b);//se le da nombre lo que se escribio
objeto.setAdeudo(z);//se le da adeudo lo que se escribio
objeto.escribir(Archivo,contador);//todo lo de escribir lo pone para que el area lo reciba
area.append(x+"t t "+b+" t t"+z+"n");
mat.setText("");
nom.setText("");
adeu.setText("");
/* try
{

/* RegistroAlumnoFile objeto=new RegistroAlumnoFile();
objeto.escribir(Archivo,0);*/
/* }
catch(NumberFormatException gt)
{
JOptionPane.showMessageDialog(null,"Por fin corre ","Error en el Archivo", JOptionPane.ERROR_MESSAGE);

}*/
mat.setEnabled(true);
nom.setEnabled(true);
adeu.setEnabled(true);



// if
}// metodo agregar
public class RegistroAlumno implements Serializable
{
private int matricula;
private String nombre;
private double adeudo;

public RegistroAlumno()
{
this(0,"",0.0);
}
public RegistroAlumno(int matr, String nombre, double importe)
{
setMatricula(matr);
setNombre(nombre);
setAdeudo(importe);
System.out.println("Inicializar objeto "+matricula+nombre+adeudo);
}
public void setMatricula(int matr)
{
matricula=matr;
}
public int getMatricula()
{
return matricula;
}
public void setNombre(String nombre)
{
this.nombre=nombre;
}
public String getNombre()
{
return nombre;
}
public void setAdeudo(double importe)
{
adeudo=importe;
}
public double getAdeudo()
{
return adeudo;
}
} // fin

public void borrar()
{
int contador=0;

RegistroAlumnoFile objeto=new RegistroAlumnoFile();
objeto.leer(Archivo,0);
objeto.escribir(Archivo,0);
contador=objeto.getMatricula();

System.out.println("ya vamos a ganar");

String a,b,c;

a=mat.getText();
b=nom.getText();
c=adeu.getText();

int x,i;
double z;

x=Integer.parseInt(a);
z=Double.parseDouble(c);

System.out.println("casa");

for(i=1;i<=contador;i--)
{
System.out.println("casota");

objeto.leer(Archivo,i);

if(objeto.getMatricula()==x)
{


System.out.println("m2");

objeto.leer(Archivo,0);// se lee el contador en la posicion cero
objeto.setMatricula(contador); //se le agrega la informacion al contador en la ultima posicion
objeto.escribir(Archivo,0); // toma el metodo escribir en la posicion cero del contador

contador=contador-1;

System.out.println("ya casi");

objeto.setMatricula(x);//se le da matricula lo que se escribio
objeto.setNombre(b);//se le da nombre lo que se escribio
objeto.setAdeudo(z);//se le da adeudo lo que se escribio
objeto.escribir(Archivo,contador);//todo lo de escribir lo pone para que el area lo reciba
area.append(x+"t t "+b+" t t"+z+"n");
mat.setText("");
nom.setText("");
adeu.setText("");
}
}


} // metodo borrar
public void modificar()
{

int contador=0;

RegistroAlumnoFile objeto=new RegistroAlumnoFile();
objeto.leer(Archivo,0);
contador=objeto.getMatricula();

System.out.println("ya vamos a ganar");

String a,b,c;

a=mat.getText();
b=nom.getText();
c=adeu.getText();

int x,i;
double z;

x=Integer.parseInt(a);
z=Double.parseDouble(c);

System.out.println("casa");

for(i=1;i<=contador;i++)
{
System.out.println("casota");

objeto.leer(Archivo,i);

if(objeto.getMatricula()==x)
{
contador=contador;

System.out.println("m2");

objeto.leer(Archivo,0);// se lee el contador en la posicion cero
objeto.setMatricula(contador); //se le agrega la informacion al contador en la ultima posicion
objeto.escribir(Archivo,0); // toma el metodo escribir en la posicion cero del contador

objeto.setMatricula(x);//se le da matricula lo que se escribio
objeto.setNombre(b);//se le da nombre lo que se escribio
objeto.setAdeudo(z);//se le da adeudo lo que se escribio
objeto.escribir(Archivo,contador);//todo lo de escribir lo pone para que el area lo reciba
area.append(x+"t t "+b+" t t"+z+"n");
mat.setText("");
nom.setText("");
adeu.setText("");
}
}

}// metodo modificar

public static void main(String[] lws)throws IOException
{
DameTuSonrisa aplicacion= new DameTuSonrisa();
aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} // MAIN PRINCIPAL
} /// lo primero