Hola, tengo hecho un ABM y tengo un inconveniente para eliminar un registro.
La aplicacion es de lo mas sencilla posible, consta de un archivo de texto en el cual guardo un par de strings separados por un tab. La parte de alta y listado la tengo bien, la parte de eliminacion de registros me falta extraer el string de autor para compararlo con el ingresado y de esa forma eliminarlo.
EL inconveniente lo tengo en la funcion eliminarDisco.
Posteo el codigo que tengo.
Código PHP:
import java.io.*;
public class disqueria {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int resultado = 0;
int num1 = 0;
do {
num1 = menuListar();
switch(num1) {
case 1:
resultado = agregarAutor();
break;
case 2:
resultado = listarDiscos();
break;
case 3:
resultado = buscarDisco();
break;
case 4:
resultado = buscarDisco();
break;
case 5:
System.out.println("Ha abandonado la aplicacion con exito!");
System.exit(1);
break;
}
}while(num1 != 5);
}
public static int menuListar() {
int i = 0;
int num1 = 0;
String inputa = "";
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("\t\t\t\tDISQUERIA");
System.out.println("1 - Agregar Disco.");
System.out.println("2 - Listar Discos.");
System.out.println("3 - Buscar Disco.");
System.out.println("4 - Eliminar Disco.");
System.out.println("5 - Salir.");
try {
do {
i = 0;
System.out.print("\n\nIngrese opcion:");
inputa = stdin.readLine();
num1 = Integer.parseInt(inputa);
if(num1 < 1 || num1 > 5) {
System.out.println("Debe ingresar un codigo correcto!!!");
i = 1;
}
}while(i == 1);
} catch (Exception e) {
System.out.println("Se ha producido un error!!!");
System.exit(1);
}
return num1;
}
public static int agregarAutor() {
String string = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
int i = 1;
int num1 = 0;
String inputa = "";
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
// ACA VA LA PARTE QUE SE AGREGA EL REGISTRO
try
{
FileWriter fichero = new FileWriter("disqueria.txt",true);
PrintWriter pw = new PrintWriter(fichero);
do {
i = 0;
System.out.print("Ingrese el autor:");
string = reader.readLine();
System.out.print("Ingrese el titulo del disco:");
string += "\t";
string += reader.readLine();
pw.println(string);
System.out.print("\n\nDesea agregar otro(1:si|0:no)?:");
inputa = stdin.readLine();
num1 = Integer.parseInt(inputa);
if(num1 != 0 && num1 != 1) {
System.out.println("Debe ingresar un codigo correcto!!!");
System.out.print("\n\nDesea agregar otro(1:si|0:no)?:");
inputa = stdin.readLine();
num1 = Integer.parseInt(inputa);
}
if(num1 == 1) {
i = 1;
} else {
i = 0;
}
} while(i == 1);
pw.close();
} catch (Exception e)
{
e.printStackTrace();
}
return 0;
}
public static int listarDiscos() {
File archivo = null;
FileReader fr = null;
//ACA VA LA PARTE QUE SE LISTAN TODOS LOS DISCOS
try {
archivo = new File ("disqueria.txt");
String linea;
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
System.out.println("AUTOR\tDISCO");
while((linea = br.readLine())!= null)
System.out.println(linea);
fr.close();
}
catch(IOException e){
System.out.println(e);
}
return 0;
}
public static int eliminarDisco() {
String string[] = {};
String nombre = "";
String autor = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
File archivo = null;
FileReader fr = null;
boolean ok = false;
int i = 0;
try
{
System.out.print("Ingrese el nombre del autor a eliminar:");
nombre = reader.readLine();
archivo = new File ("disqueria.txt");
String linea;
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea = br.readLine())!= null) {
ok = nombre.equalsIgnoreCase(autor);
if(ok) {
string[i] = linea;
}
i++;
}
fr.close();
guardarRegistros(string);
}
catch(Exception e){}
// ACA VA LA PARTE QUE LEE DEL ARCHIVO Y ELIMINA SI ENCONTRO
return 0;
}
public static int buscarDisco() {
String string = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
try
{
System.out.print("Ingrese el nombre del autor a buscar:");
string = reader.readLine();
}
catch(Exception e){}
// ACA VA LA PARTE QUE LEE DEL ARCHIVO Y MUESTRA SI ENCONTRO
return 0;
}
public static void guardarRegistros(String reg[]) {
int i = 0;
int cant = reg.length;
try
{
FileWriter fichero = new FileWriter("disqueria.txt");
PrintWriter pw = new PrintWriter(fichero);
while(i < cant) {
pw.println(reg[i]);
i++;
}
pw.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}