Regitros en ficheros

Hola tengo un problema con los registros en ficheros,es decir con bajas,altas y modificar regitros.
Estoy haciend una tarea y tengo hech esto hasta el momento.Os muestro el codigo y me comentais como puedo solucionarlo.
Lo que quiero es borrar,actualizar,insertar,modificar regitros que hay en un fichero y lo utilizo desde la aplicacion y tambien insertar nuevos registros.

Esta es la clase del objeto que es un libro,la aplicacion es admnistrar una biblioteca.

package bibliofichero;

import java.util.*;

    public class libro{
        private String codigo;
        private String titulo;
        private String autor;
       

        public String getCodigo(){
            return codigo;
        }

        public String getTitulo(){
        return titulo;
        }

        public String getAutor(){
            return autor;
        }

       

        public void setCodigo(String cod){
            this.codigo=cod;

        }
        public void setTitulo(String tit){
            this.titulo=tit;
        }
        public void setAutor(String aut){
            this.autor=aut;
        }

        libro  (){}
        libro (String titulo,String codigo,String autor){
            this.titulo=titulo;
            this.codigo=codigo;
            this.autor=autor;
         
    }
     

    }

hola

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Payan

Este es el main

import java.util.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.StringTokenizer;

public class Main {
public static leer teclado=new leer();
public static libro libro2=new libro();

public static void main(String[] args) throws IOException {
String ruta="C:\\Users\\6daw\\Desktop\\d.txt";
ArrayList biblio=new ArrayList();
Main.leefichero(ruta,biblio);

ArrayList autores=new ArrayList();
int opcion=0;

// libro libros=new libro("Don quijote","1","Cervantes");
// biblio.add(libros);

boolean continuar = true;
do{
switch(Main.Menu()){
case 1:
Main.nuevo(biblio);
break;

case 2:
escribefichero(biblio);
continuar=false;
}
}while(continuar);

}

public static int Menu(){
int opcion;
int numopcion = 2;
System.out.println("1- dar de alta un libro");

System.out.println("2- Salir");
do{

opcion=teclado.datoInt();
if(!(opcion<= numopcion && opcion >= 1))
System.out.println("Introduzca una opcion valida");
}while(!(opcion<= numopcion && opcion >=1 ));
return opcion;

}

public static void nuevo(ArrayList biblio) throws IOException{

System.out.println(" ");
System.out.println("Introduzca el codigo");
String codigo=teclado.dato();
if(Main.existe(biblio, codigo)==-1){
System.out.println(" ");
System.out.println("Introduce el Titulo");
String titulo=teclado.dato();
titulo=titulo.trim();
titulo=titulo.toUpperCase();
System.out.println(" ");
System.out.println("Introduce el Autor");
String autor=teclado.dato();

libro2=new libro(titulo,codigo,autor);

biblio.add(libro2);
System.out.println(" ");
}else{
System.out.println("El Codigo introducido corresponde a un libro existente");
}

}

public static void listado(ArrayList biblio) throws IOException{

for( int i=0 ; i < biblio.size(); i++){
libro2=(libro)biblio.get(i);
System.out.println("autor: "+libro2.getAutor()+" titulo: "+libro2.getTitulo()+" Estado: "+libro2.muestraEstado());

}
}

public static int existe(ArrayList biblio,String codigo){
int cont=-1;

for( int i=0 ; i < biblio.size(); i++){
libro2=(libro)biblio.get(i);
if(libro2.getCodigo().equals(codigo))
cont=i;

}
return cont;
}

static void escribefichero(ArrayList biblio){
String linea;

try{
FileWriter fw=new FileWriter("C:/Users/6daw/Desktop/d.txt");
BufferedWriter bw=new BufferedWriter(fw);
for( int i=0 ; i < biblio.size() ; i++){
libro2=(libro)biblio.get(i);
linea=libro2.getTitulo()+","+libro2.getCodigo()+","+libro2.getAutor();
bw.write(linea);
bw.newLine();

}
bw.flush();
bw.close();
fw.close();
}
catch(IOException ex){

System.out.println("fallo al escribir");
}

}

public static void leefichero(String ruta ,ArrayList biblioteca) {

try {
FileReader fr = new FileReader(ruta);
BufferedReader br=new BufferedReader (fr);
String linea;
int x=0;

while ((linea = br.readLine()) != null) {
StringTokenizer cadena=new StringTokenizer(linea,"/",false);
while(cadena.hasMoreTokens()){
x++;
switch(x){
case 1:
String tit= cadena.nextToken();
libro2.setTitulo(tit);
break;
case 2:
String cod=cadena.nextToken();
libro2.setCodigo(cod);
break;
case 3:
String aut=cadena.nextToken();
libro2.setAutor(aut);
x=0;
break;
}

}
biblioteca.add(libro2);

}

} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

}

}