2017-12-29 50 views
1

ファイル内の値を変更したいUtilizadores.txt デフォルト値はzeroですが、ボタンをクリックすると値が10に変更され、新しい値が変更されるたびに変更されます値が+10 になる問題は、(10/20/30 ...)と表示されるスペースが空白になるようにしようとするときですファイルの値を変更するJava

PS:ファイルの行だけが変更されます。特定のID(私のユーザーのID)

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

0の値を増分して上書きしようとしていますか?次に、ファイルからテキストを取得し、intに変換してから文字列に戻し、ファイルに書き込みます。 – flash76

+0

私はのSystem.out.println(getPontos [I])を行うときに、出力に 出力権利である:10 が、ファイルにのみ空白 –

答えて

0

はStringにあなたの整数を変換しようとしている。 bw.write(String.valueOf(getPontos[i])); 代わりに bw.write(getPontos[i]);

+0

ですが、あなたに感謝、それは –

+0

あなたの歓迎を作品に考えます答えを確認する:) –

関連する問題