保存和读取多个对象

时间:2014-02-13 18:40:06

标签: java swing jlist

我想在java中保存和读取对象。

private JButton save = new JButton("save");
save.addActionListener(
           new ActionListener(){
              public void actionPerformed(ActionEvent arg0){
                 sauvegarder();}}); 
read();

现在这些是阅读和保存对象的方法......

保存::::

的方法“sauvegarder”
  ArrayList<projet> file = new ArrayList<projet> ();


  public void sauvegarder(){

    projet pro = new projet (Integer.parseInt( a1.getText()),a2.getText(),a3.getText(),list1);
        file.add(pro);  

      try {
           FileOutputStream fileOut= new FileOutputStream("LES PROJETS.txt");
           ObjectOutputStream out = new ObjectOutputStream(fileOut) ;

           for (projet a:file)
              out.writeObject(a);
           out.close();
        }

           catch(Exception e) 
           {e.printStackTrace();}

        JOptionPane.showMessageDialog(null,
                " ^_^ FILE SAVED ^_^","save file",
                JOptionPane.INFORMATION_MESSAGE);}

方法“阅读”阅读:::

 ArrayList<projet> file1 = new ArrayList<projet> ();
 JList l1 = new JList();


 public void read(){
  ObjectInputStream in = null;

     try {
        FileInputStream fileIn = new FileInputStream("LES PROJETS.txt");
        in = new ObjectInputStream(fileIn) ;
        while (true){      
           try{
              projet c =( projet) in.readObject();
              file1.add(c);}
              catch(EOFException ex){// end of file case

                 break;}
        }}

        catch(Exception e)
        {e.printStackTrace();}
     finally{ 
        try { in.close();
        } 
           catch (IOException e) { 
              e.printStackTrace(); } }}
     l1= new JList (file1.toArray());
           }

现在阅读和保存工作正常,但问题是这两个arraylists是空的!!当我写file.size() - &gt; 0 !!虽然我是保存对象....文件“les projets .txt”包含我保存的对象,JList显示arraylist中的对象!!!

加上当我想保存更多对象(projet)时,我保存的第一个对象被删除,新对象被保存...... 有人可以帮我吗?!

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试使用此列表file

进行编写
ArrayList<projet> file = new ArrayList<projet> ();
...
for (projet a:file)
     out.writeObject(a);

这是空的,因为你从不向它添加任何东西。 数据的列表为file1

ArrayList<projet> file1 = new ArrayList<projet> ();

您需要撰写file1而不是file

的数据