Autor Tema: java.awt.event.MouseEvent evt sobre un JLabel para guardar en ficheros [Java]  (Leído 2818 veces)

Refer

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 14
    • Ver Perfil
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
« Última modificación: 03 de Septiembre 2015, 08:52 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:java.awt.event.MouseEvent evt sobre un JLabel para guardar en ficheros [Java]
« Respuesta #1 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!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".