Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Refer en 01 de Septiembre 2015, 04:18

Título: java.awt.event.MouseEvent evt sobre un JLabel para guardar en ficheros [Java]
Publicado 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.

Código: [Seleccionar]
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
Título: Re:java.awt.event.MouseEvent evt sobre un JLabel para guardar en ficheros [Java]
Publicado por: César Krall en 03 de Septiembre 2015, 08:53
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!