2017-11-15 13 views
-1

これは私のsaveTableボタンで、私のテーブルの1行を保存して、それを私のAuto.autoファイルに入れますが、object(row)Auto typeの1つしか保存できません。私は別のものを保存するたびにline(row)新しいプログラムを置き換えるので、プログラムの実行中に5回の保存ボタンをクリックした後、私のファイルにはobject(row of table)が1つしかありません。これをどうすれば解決できますか?プログラムを実行するたびにファイルにオブジェクトを追加するには?

 saveTable.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      int row = Integer.parseInt(textField.getText()); 
      getText.getAuto(row); 
      File tabel = new File("C:\\Users\\Jovan\\Desktop\\Auto.auto"); 
      try { 
       if (!(tabel.exists())) { 
        tabel.createNewFile(); 
       } 
       FileOutputStream fos = new FileOutputStream(tabel); 
       ObjectOutputStream oos1 = new ObjectOutputStream(fos); 
       oos1.writeObject(getText.getAuto(row)); 
       oos1.close(); 


       ObjectOutputStream os2 = new ObjectOutputStream(new FileOutputStream(tabel, true)) { 
        protected void writeStreamHeader() throws IOException { 
         reset(); 
        } 
       }; 

       os2.writeObject(getText.getAuto(row)); 
       os2.close(); 




      } catch (IOException error) { 
       error.printStackTrace(); 
      } 
     } 


    }); 
+0

どうfos' 'は?それは 'new FileOutputStream(tabel、true);'ではないでしょうか? –

答えて

1
new FileOutputStream(tabel, true) 

2番目のパラメータは、あなたはそれが

公衆たFileOutputStream(ファイルのファイルは、 ブールAPPEND) はしてFileNotFoundExceptionをスローが

を作成し、上書きするのではなく、そのファイルに追加することを意味します指定されたFileオブジェクトによって表されるファイルに書き込むファイル出力ストリーム。 2番目の引数がtrueの場合、バイトは最初のファイルではなく末尾の に書き込まれます。新しいFileDescriptorオブジェクトは、このファイル接続を表すために作成された です。最初に、 セキュリティマネージャがある場合、ファイルの引数で表されるパス を引数として、そのcheckWriteメソッドが呼び出されます。

は存在しませんが、作成できないか、他の の理由で開くことができない場合、FileNotFoundExceptionがスローされます。

リファレンスhere

関連する問題