Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Refer en 01 de Septiembre 2015, 04:18
-
Buenas a todos, Estoy haciendo un registro en un archivo Txt pero tengo un problema
El problema ocurre en la Fase 2 me tira error, no se porque aun.
El objetivo del metodo es editar un archivo txt(registro de cuentas):
Si el archivo no existe, creara otro nuevo.
Si el archivo no contiene ninguna cuenta previa se creara la cuenta no. 1 con los datos ingresados.
Si el archivo existe y no esta vacio, se procedera a añadir cuentas enumeradas. pero sin que el numero de registro sea igual a los existentes.
Este seria un ejemplo de una cuenta y su numero de registro.
//registro #1
|
nombre: PRUEBA
contraseña: prueba
edad: 20
genero: Hombre
|
-La Fase1 almacena los numeros de registro en string, ejemp. 1,2,3,4,5,6,7,8,
-La Fase2 se optiene los numero de usuarios y se comparan para crear uno nuevo que no sea igual al registro siguiente. El problema surge en la excepcion Fase2(no se en que parte de ella)
- La Fase3 asigna un nuevo registro con distinto numero y los valores introduccidos en los campos de textos de la GUI.
private void jLabel14MouseClicked(java.awt.event.MouseEvent evt) {
reUsuario = tfUsuario.getText();
reContra = tfContraseña.getText();
reEdad = tfEdad.getText(); reUsuario = reUsuario.toUpperCase();
reGenero = String.valueOf(jComboBox1.getSelectedItem());
int lineasLeidas = 1;
Boolean textVacio = null;
File text = new File("C:\\Users\\HM\\Desktop\\Interfaz\\prueba.txt");
FileReader archivoLector = null; BufferedReader lector = null; FileWriter archivo = null;
try{
if(!text.exists()){
System.out.print("El archivo: "); System.err.print(text); System.out.print(" no existe, se creara uno con la misma ruta.");
archivo = new FileWriter(text);
archivo.close();}
}catch(Exception textExist){
System.err.println("No se pudo crear un nuevo archivo para registrar las cuentas");
}
//Registros que existen en el text //numero del registro a crear
String registros =""; int numRegistro=0;
try{
//Lectores del text
archivoLector = new FileReader(text);
lector = new BufferedReader(archivoLector);
//Escritor del text
archivo = new FileWriter(text,true);
}catch(Exception x0012){
System.err.println("No se pudieron inizializar los flujos");
}
//Leer el registro y optener los registros encontrados
String Lineas_registros="";
try{
if((Lineas_registros = lector.readLine())== null){
//ingreso de datos al archivo
archivo.write("//registro #1"+"\r\n");
archivo.write("|"+"\r\n");
archivo.write("nombre: "+reUsuario+"\r\n");
archivo.write("contraseña: "+reContra+"\r\n");
archivo.write("edad: "+reEdad+"\r\n");
archivo.write("genero: "+reGenero+"\r\n");
archivo.write("|"+"\r\n");
archivo.close();
textVacio = true;
lector.reset();
}else{
textVacio = false; System.out.println("NO ES NULO");}
}catch(Exception llenandoVacio ){
System.err.println("Error llenando el archivo vacio.");
}
//El text si existia y no estaba sin ningun registro
if(!textVacio){
try{
try{
int totalRegistros = 1;
while((Lineas_registros = lector.readLine())!= null){
if(Lineas_registros.charAt(0) == '/' && Lineas_registros.charAt(1) == '/'){
registros = registros + Lineas_registros.substring(12)+",";
System.out.print("FASE 1: OK ");
System.out.println("["+lineasLeidas+"] "+"Total de registro encontrados: "+totalRegistros+" en la linea no."+lineasLeidas+" ("+registros+")");
totalRegistros++;
}
lineasLeidas++;
}}catch(Exception Fase1){
System.err.println("FASE1: ERROR");}
System.out.println("Registros: "+registros+" + EL NUEVO REGISTRO");
try{
//Escribir nuevo registro Se agregaran numeros hasta llegar a una ',' como resultado
// comparar si ese registro existe
Boolean creoUsuario=false, inicioChars=false; String charsDelRegistro="";
while(creoUsuario != true){
String elRegistro; int caractesRecorridos = 0; int inicioPie=0;
if(registros.charAt(caractesRecorridos) != ','){
charsDelRegistro += Lineas_registros.charAt(caractesRecorridos);
if(!inicioChars){
inicioPie= caractesRecorridos;
inicioChars= true;
}
}
else if(Lineas_registros.charAt(caractesRecorridos) != ','){
elRegistro = Lineas_registros.substring(inicioPie, caractesRecorridos-1);
//Buscar si el valor de elRegistro existe o esta registrado en text
if(Lineas_registros !=null ||Lineas_registros.contains(elRegistro))
System.out.println("El registro ya existe");
else{
numRegistro = caractesRecorridos;
creoUsuario = true;
System.out.println("Se creo otro registro no."+numRegistro);}
}
System.out.println("Numero de caracteres Recorridos: "+caractesRecorridos);
caractesRecorridos++;
}}catch(Exception Fase2){
System.err.println("Fase 2:Error");
}
try{
//ingreso de datos al archivo
archivo.write("//registro #"+numRegistro+"\r\n");
archivo.write("|"+"\r\n");
archivo.write("nombre: "+reUsuario+"\r\n");
archivo.write("contraseña: "+reContra+"\r\n");
archivo.write("edad: "+reEdad+"\r\n");
archivo.write("genero: "+reGenero+"\r\n");
archivo.write("|"+"\r\n");
archivo.close();
JOptionPane.showMessageDialog(null,"Se ha registrado la cuenta a nombre de: "+reUsuario);
}catch(Exception Fase3){
System.err.println("Fase 3:Error");
}
}catch(Exception crearCuenta){
System.err.println("No se pudo crear una nueva cuenta");
}}
layerRegistro.setVisible(true);
jLayeredPane1.setVisible(false);
}
Por favor ayudenme para ya terminar mi proyecto xd
-
Hola Refer he intentado mirar el problema pero es demasiado amplio o indeterminado. Tendrías que dar una explicación más detallada y o bien subir el proyecto completo a dropbox o similar e indicar los pasos a seguir hasta obtener el fallo de modo que podamos hacer exactamente lo mismo que haces tú hasta obtener el fallo, o bien crear un pequeño test que podamos compilar y probar donde está el fallo.
Saludos!