我需要将数据库表中的数据以文本文件保存,以下是代码片断: 
public void save(String path) {
    try {
      con = ConnectionDateBase.getConnection();
      stmt = con.createStatement();
      rs = stmt.executeQuery("select * from Record");
        while(rs.next()) {
        try {
          if (path != null) {
            FileWriter out = new FileWriter(path);
            BufferedWriter bw = new BufferedWriter(out);
            bw.write(rs.getString(1) + "\t");
            bw.write(rs.getString(2) + "\t");
            bw.write(rs.getString(3) + "\t");
            bw.write(rs.getString(4) + "\t");
            bw.write(rs.getString(5) + "\t");
            bw.write(rs.getString(6));
            bw.newLine();
            bw.close();
          }
          else {
            filechooser.showSaveDialog(this);
            path = filechooser.getSelectedFile().getAbsolutePath();
            File file = new File(path);
            file.createNewFile();
            save(path);
          }
        }
        catch (IOException e) {}
问题:表中有多条记录时,只能保存一条记录,其他的好像被覆盖了。请问:怎样才能保存全部记录?请基于本代码的基础。谢谢!

解决方案 »

  1.   

    难道你不觉得你每读一条记录的时候都重新建了一个文件输出流,你以为每次的记录都回写在上一条记录之后,其实是每次都覆盖了上次的记录,
    /*************
     if   (path   !=   null)   { 
          FileWriter   out   =   new   FileWriter(path); 
          BufferedWriter   bw   =   new   BufferedWriter(out); 

    把个地方改下应该就可以了;具体代码我就不写了,没工具.
      

  2.   

    BufferedWriter只能从文件的起始位置向后顺序读/写,所以你的循环中其实每次都是把前一条纪录给覆盖掉了。
    使用public FileWriter(File file,boolean append)在给出 File 对象的情况下构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 
     将FileWriter out = new FileWriter(path);   
     BufferedWriter bw = new BufferedWriter(out);   
    改成:
     File f=new File(path);
    FileWriter out=new FileWriter(f,ture);
    然后再用FileWriter相关的方法