2017-12-29 32 views
1

So, ich möchte einen Wert in der Datei ändern Utilizadores.txt der Standardwert ist zero aber wenn ich in die Schaltfläche klicken, muss der Wert auf 10 ändern und jedes Mal, wenn ich ein neues mache der Wert wird +10 Das Problem ist, wenn e versuchen, dass der Raum zu tun, wo es erscheinen sollte (10/20/30 ...) erscheint leerÄndern Sie einen Wert in einer Datei Java

PS: es ändert sich nur in den Zeilen der Datei, die haben eine bestimmte ID (die ID meines Benutzer)

private void ConfirmarActionPerformed(java.awt.event.ActionEvent evt) {  
    String filePath = "Reservas.txt"; 
    File file = new File(filePath); 
    try { 
     FileWriter fw1 = new FileWriter(file, true); 
     BufferedWriter bw1 = new BufferedWriter(fw1); 
     bw1.write(this.id+ "-" + cbxrestaurante.getSelectedItem().toString() + "-" + Dia.getText() + "-" + Hora.getText() + "-" + Lugares.getText()); 
     bw1.newLine(); 
     bw1.close(); 
     fw1.close(); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(ClienteForm.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(ClienteForm.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    String filePath1 = "Utilizadores.txt"; 

    File file1 = new File(filePath1); 

    try { 
     FileReader fr = new FileReader(file1); 
     BufferedReader br = new BufferedReader(fr); 
     FileWriter fw = new FileWriter(file1, true); 
     PrintWriter bw = new PrintWriter(fw); 


     /*BufferedReader br = new BufferedReader(new FileReader(file1)); 
     FileWriter fw = new FileWriter(file1, true); 
     PrintWriter bw = new PrintWriter((file1), "UTF-8");*/ 

     //PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file1, true))); 


     Object[] lines = br.lines().toArray(); 
     Integer[] getPontos = new Integer[lines.length]; 
     String[] identificador = new String[lines.length]; 
     String[] cartao = new String[lines.length]; 
     String[] Pass = new String[lines.length]; 
     String[] Nome = new String[lines.length]; 
     String[] NIF = new String[lines.length]; 
     String[] Tele = new String[lines.length]; 
     String Zero = "zero"; 
     String[] Morada = new String[lines.length]; 
     String[] Localidade = new String[lines.length]; 
     String[] dono = new String[lines.length]; 
     for (int i = 0; i < lines.length; i++) { 
      String[] row = lines[i].toString().split("-"); 
      if (Objects.equals(Zero, row[10])||Integer.parseInt(row[10])==0) { 
        getPontos[i] = 0; 

      } else { 

       getPontos[i] = Integer.parseInt(row[10]);   
      } 

      identificador[i] = row[1]; 
      cartao[i] = row[2]; 
      Pass[i] = row[3]; 
      Nome[i] = row[4]; 
      NIF[i] = row[5]; 
      Tele[i] = row[6]; 
      Morada[i] = row[7]; 
      Localidade[i] = row[8]; 
      dono[i] = row[9]; 
      if (Integer.parseInt(identificador[i]) == this.id) { 
       if (getPontos[i] == 0) { 
        getPontos[i] = 10; 
       } else { 
        getPontos[i] = getPontos[i] + 10; 

       } 
      } 
     } 
     fr.close(); 
     br.close(); 
     File temp = new File("Utilizadores.txt"); 
     if (temp.exists()) { 
      RandomAccessFile raf = new RandomAccessFile(temp, "rw"); 
      raf.setLength(0); 
     } 

     for (int i = 0; i < lines.length; i++) { 
      bw.write("UserId-"); 

      bw.write(identificador[i] + "-"); 
      bw.write(cartao[i] + "-"); 
      bw.write(Pass[i] + "-"); 
      bw.write(Nome[i] + "-"); 
      bw.write(NIF[i] + "-"); 
      bw.write(Tele[i] + "-"); 
      bw.write(Morada[i] + "-"); 
      bw.write(Localidade[i] + "-"); 
      bw.write(dono[i] + "-"); 
      bw.write(getPontos[i]); 
      bw.write("\r\n"); 

     } 
     bw.close(); 
     fw.close(); 
     this.dispose(); 
    } catch (FileNotFoundException ex) { 
     System.out.println("Import nao funciona"); 
    } catch (IOException ex) { 
     Logger.getLogger(ClienteForm.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+1

Sind Sie versuchen, den Wert 0 und überschreiben sie zu erhöhen? Holen Sie dann den Text aus der Datei, konvertieren Sie ihn in int, dann zurück in den String und schreiben Sie in die Datei. – flash76

+0

wenn ich System.out.println (getPontos [i]) zu tun, in der Ausgabe Ausgang rechts ist: 10 aber in der Datei ist nur ein Leerzeichen –

Antwort

0

Versuchen Sie, Integer in String zu konvertieren: bw.write(String.valueOf(getPontos[i])); statt bw.write(getPontos[i]);

+0

danke, es –

+0

Gern arbeitet, denken validiere die Antwort :) –

Verwandte Themen