如何将信息从JTable保存到文件?

时间:2014-12-08 21:05:51

标签: java swing io jtable jframe

以下是我的案例:

到目前为止,我和我的小组设法从外部文件中读取信息并将其放在JTable中。但我们需要一个更新按钮。所以我们猜测我们应该在编辑内部的东西之后从JTable中获取所有信息,并将其替换为同一文件中的当前信息。所以我们认为我们必须覆盖旧文件。

到目前为止,我们得到了这个:(对于int i ...是代码的一部分,但无法将其置于灰色区域内:P)

for(int i = 0; i < model.getRowCount(); i++) {
    p += model.getValueAt(i, 0) + " "
                + model.getValueAt(i, 1) + " "
                + (Integer) model.getValueAt(i, 2) + " "
                + model.getValueAt(i, 3) + " "
                + (Integer)model.getValueAt(i, 4) + " "
                + model.getValueAt(i, 5) + " "
                + model.getValueAt(i, 6) + " "
                + model.getValueAt(i, 7) + " "
                + (Integer)model.getValueAt(i, 8) + "\n";
}

// Update File
SaveMember sm = new SaveMember();
sm.update(p);

在我们的SaveMember.java中,我们得到了:

public void update(String x) throws Exception {
    File f = new File("Members/Members.txt");
    PrintStream output = new PrintStream(f);  
    output.print(x);

所以到现在我们去更改数据并按下按钮更新时,它根本不做任何事情,并且不会用新的替换旧数据..感谢阅读! :)

2 个答案:

答案 0 :(得分:0)

我不确定。如果您已经仔细检查过您的代码是否已执行(可能您忘记将ActionListener附加到按钮 - 我们都会不时地执行此操作...)尝试刷新输出流并在之后关闭流。

答案 1 :(得分:0)

首先检查for循环中的代码是否完全执行。在for循环后设置断点并检查字符串 p 。如果您不熟悉调试,请使用System.out.println(p)将字符串打印到控制台。

如果您的代码未执行:请检查您的代码所在方法未调用的原因。也许您忘记将动作侦听器附加到更新按钮,或者动作侦听器在某些情况下会提前返回。

如果您的代码已执行:您如何处理 update 方法引发的异常?确保使用记录器记录它或将其打印到控制台(再次通过System.out.println(exc))。如果您收到 FileNotFoundException ,则该文件的路径不正确。