[ Foro de Java ]

Crear .txt desde .jar no funciona

25-Nov-2020 22:16
Diego Erazo
1 Respuestas

Hola estimados amigos, quizás me puede ayudar con el siguiente problemita. He hecho un programita en Java con Netbeans 11. Al ejecutarlo el programa crea un .txt y en el guarda las horas del sistema según el usuario presiona un botón. Por otro lado, con otro botón lee la información del .txt creado anteriormente y hace un cálculo con esos datos.

La cuestión es que todo funciona bien cuando lo ejecuto desde en netbeans, se crean los archivos (en la carpeta del proyecto), se leen, etc.

Tengo que enviar el proyecto para que sea revisado por el profesor y por eso creé un .jar . La cuestión es que el .jar se ejecuta en mi máquina (con el netbeans cerrado) pero no crea el .txt . Si yo lo creo adrede, tampoco lo lee, y no sé donde está el fallo, estoy tratando de hacerlo .exe pero aún no lo consigo (aunque no se si así funcione) así que con que funcione el .jar me es suficiente pero no sé dónde está el problema.

Muchas gracias por si alguien sabe como solucionar esto. Dejo unas imágenes y las líneas del código que creo necesitan ver. Salu2.-

Esto crea el .txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void CREARActionPerformed(java.awt.event.ActionEvent evt) {
       // TODO add your handling code here:

       try {

           File archivo = new File(ID_usuario.getText() + ".txt");
           System.out.println(archivo);
           if (!archivo.exists()) {
               FileWriter escribir = new FileWriter(archivo, true);
               escribir.close();
               JOptionPane.showMessageDialog(null, "Usuario creado correctamente.", "CORRECTO",-1);
               this.setVisible(false);
           } else {
               JOptionPane.showMessageDialog(null, "Usuario ya existe.", "ERROR", 0);
           }

       } //Si existe un problema al escribir cae aqui
       catch (Exception e) {
           System.out.println("Error al escribir");
       }
   }

Así escribo en el .txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
try {

           File archivouno = new File(ID_Fichaje.getText() + ".txt");

           if (!archivouno.exists()) {
               JOptionPane.showMessageDialog(null, "Usuario no existe.", "ERROR", 0);
           } else {

               //Lee la hora del sistema
               Calendar calendario = Calendar.getInstance();
               calendario = new GregorianCalendar();
               int hora, minutos;
               hora = calendario.get(Calendar.HOUR_OF_DAY);
               minutos = calendario.get(Calendar.MINUTE);
               System.out.println(hora + ":" + minutos);

               String saludo = (hora + ":" + minutos + "\n");

               try {
                   //Crear un objeto File se encarga de crear o abrir acceso a un archivo que se especifica en su constructor
                   File archivo = new File(ID_Fichaje.getText() + ".txt");

                   //Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
                   FileWriter escribir = new FileWriter(archivo, true);

                   //Escribimos en el archivo con el metodo write
                   escribir.write(saludo);

                   //Cerramos la conexion
                   escribir.close();
               } //Si existe un problema al escribir cae aqui
               catch (IOException e) {
                   System.out.println("Error al escribir");
               }
               JOptionPane.showMessageDialog(null, "Fichaje correcto.", "CORRECTO", -1);
           }

       } //Si existe un problema al escribir cae aqui
       catch (HeadlessException e) {
           System.out.println("Error al escribir");
       }

Y así leo el .txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private void HorasActionPerformed(java.awt.event.ActionEvent evt) {
       // TODO add your handling code here:

       if ("dferazo".equals(ID_Administrador.getText())) {
           String fichero = ID_User.getText() + ".txt";

           File f = new File(fichero);
           System.out.println(fichero);

           if (!f.exists()) {
               JOptionPane.showMessageDialog(null, "Usuario no existe.", "ERROR", 0);
           } else {

               FileReader fr = null;
               try {
                   fr = new FileReader(fichero);

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

               BufferedReader br = new BufferedReader(fr);
               //System.out.println(fichero);

               //Cuenta el número de líneas del txt
               String linea;
               int cont = 0;
               try {
                   while ((linea = br.readLine()) != null) {
                       cont++;
                   }
               } catch (IOException ex) {
                   Logger.getLogger(Fichaje.class.getName()).log(Level.SEVERE, null, ex);
               }
               //System.out.println(cont);
// y empiezan los cálculos..........

Muchas gracias de antemano. Por cierto al crear el .jar se crea dentro de la carpeta dist y solo se crea el .jar y un readme.txt........... entiendo que debería crearse una carpeta lib, pero lo he hecho mil veces y eso no se crea.


25-Nov-2020 22:17
Diego Erazo

Lo siento, no me di cuenta de que se pegaron líneas vacías.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)