使用Object input \ output Streams with files and array list

时间:2010-05-29 19:50:59

标签: java arraylist filestream

我是一名IT学生,现在是时候用Java完成我的最终项目了。我遇到了很多问题,这个问题我无法解决,而且我真的很沮丧。

我的代码是这样的:

在Admin类中:

 public ArrayList cos_info = new ArrayList();
 public ArrayList cas_info = new ArrayList();
 public int cos_count = 0 ;
 public int cas_count = 0 ;


void coustmer_acount() throws FileNotFoundException, IOException{
String add=null;
 do{
    person p = new person() ;
    cos_info.add(cos_count, p);
    cos_count ++ ;
     add =JOptionPane.showInputDialog("Do you want to add more  coustmer..\n'y'foryes ..\n 'n'for No ..");
     }

   while(add.charAt(0) == 'Y'||add.charAt(0)=='y');
   writenew_cos();
  // add_acounts();
   }

    void writenew_cos() throws IOException{
    ObjectOutputStream aa = new ObjectOutputStream(new FileOutputStream("coustmer.txt"));
    aa.writeObject(cos_info);
    JOptionPane.showMessageDialog(null,"Added to file done sucessfuly..");
    aa.close();
     }

在Coustmer课程中:

void read_cos() throws IOException, ClassNotFoundException{
 person p1= null ;
 int array_count = 0;
 ObjectInputStream d = new ObjectInputStream(new FileInputStream("coustmer.txt"));
 JOptionPane.showMessageDialog(null,d.available() );
        for(int i = 0;d.available() == 0;i++){
        a.add(array_count,(ArrayList) d.readObject());
         array_count++;
        JOptionPane.showMessageDialog(null,"Haaaaai :D" );
        JOptionPane.showMessageDialog(null,array_count );
       }
       d.close();
       JOptionPane.showMessageDialog(null,array_count +"1111" );
             for(int i = 0 ; i<array_count&& found!= true ; i++){
            count ++ ;
            p1 =(person)a.get(i);
            user=p1.user;
            pass = p1.pass;
           // cos_checkpass();
                                    }
                        }

它只打印JOptionPane.showMessageDialog(null,d.available() );  并有一个例外。这里a.add(array_count,(ArrayList) d.readObject()); p.s:来自我自己的类的person对象,它是Serializable。

2 个答案:

答案 0 :(得分:0)

非常确定您编写的任何类都不应该抛出ClassNotFoundException

答案 1 :(得分:0)

我建议在你的方法调用周围放一个try / catch,它会在catch

中抛出异常
catch(Exception ex){
ex.printStackTrace();
}

要找出错误来自哪里,它可能会为您提供更多信息,告知您所获得的错误。

另外,我建议使用

JOptionPane.showMessageDialog(null, "Add more Customers?", "Continue?",JOptionPane.ERROR_MESSAGE);

或类似的东西,而不是获取用户键入的字符,它创建一个更友好的用户界面。