在java中保存函数创建新列而不是覆盖

时间:2016-05-05 14:09:21

标签: java arrays netbeans save

所以我用Java编写程序,允许我创建团队(也删除它们并编辑它们)。

创建团队后,该程序允许用户添加10个玩家,定义他们的体重并尝试评分,然后再次删除和编辑它们。现在,只要他们达到10个玩家,就会失去添加更多功能的能力,并且启用了保存按钮。

我遇到的问题是:如果我保存一个团队然后对其进行编辑或删除它并尝试再次保存,则该表会创建另一个列并将所有值向右移动一列。这些图片会更好地说明我的意思。

第一次保存时: When saved for first time

第二次保存后: After saving 2nd time

保存功能的代码如下:

private void btn_SaveTeamActionPerformed(java.awt.event.ActionEvent evt) {                                             
  DefaultTableModel pattern  = (DefaultTableModel) table_PlayerBoard.getModel();

  try {
        saveTable((String) table_LeaderBoard.getValueAt(table_LeaderBoard.getRowCount() - 1, 0));
  } catch (Exception ex) {
        Logger.getLogger(Mainpage.class.getName()).log(Level.SEVERE, null, ex);
  }

  enableTeamEdit();
  btn_SaveTeam.setEnabled(false);
  JOptionPane.showMessageDialog(null, "Team Saved");

  pattern.setRowCount(0);
  btn_RankTeams.setEnabled(true);
  counter = 0;
}                                            

ArrayList <Integer> triesList = new ArrayList();
ArrayList <String> teamList = new ArrayList();
boolean check = false;

我真的不明白错误在哪里。如果还有其他信息,请告诉我。提前谢谢。

saveTable方法:

public void saveTable(String fileName)throws Exception  {
    DefaultTableModel chart  = (DefaultTableModel) table_PlayerBoard.getModel();  
    BufferedWriter bfw = new BufferedWriter(new FileWriter("C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Sports\\" + fileName + ".txt")); 
    System.out.println(fileName);

    for (int i = 0 ; i < chart.getRowCount(); i++)
    {
        for(int j = 0 ; j < chart.getColumnCount();j++)
        {
            bfw.write((chart.getValueAt(i,j).toString()));
            bfw.write("\t");;
        }
        bfw.newLine();
    }
    bfw.close();
}

1 个答案:

答案 0 :(得分:0)

在你的saveTable(...)方法中,只需删除给定文件的内容,然后打开一个新文件,如下所示:

 String path = "C:\\Users\\" + System.getProperty("user.name") + "\\Desktop\\Sports\\" + fileName + ".txt";
 File file = new File(path);
 file.delete();
 file = new File(path);

 BufferedWriter bfw = new BufferedWriter(new FileWriter(file));