2012-04-03 143 views
0

我在写一个ArrayList到java中的File时遇到问题。下面的程序是将错误保存到文件中,而不是我试图保存的数据。将ArrayList写入文件的异常

以下是我正在使用的代码。任何人都可以指出我做错了什么?

package mytracker; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.util.List; 
import javax.swing.JOptionPane; 

public class ExportContacts 
{ 
    private ObjectOutputStream OP; 

    private void openFileOut(String path) 
    { 
     try 
     { 
      OP = new ObjectOutputStream(new FileOutputStream(path + ".dat")); 
     } 
     catch (IOException e) 
     { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    } 

    private void AddContacts(List<Contact> contacts) 
    { 
     try 
     { 
      for(int i=0;i<contacts.size();i++) 
      { 
       OP.writeObject(contacts.get(i)); 
      } 
     } 
     catch (IOException e) 
     { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    } 

    private void CloseFileOut() 
    { 
     try 
     { 
      if(OP!=null) 
       OP.close(); 
     } 
     catch (IOException e) 
     { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    } 

    public void ExportConacts(String path,List<Contact> contacts) 
    { 
     openFileOut(path); 
     AddContacts(contacts); 
     CloseFileOut(); 
    } 
} 

private void ExportButtonMouseClicked(java.awt.event.MouseEvent evt) 
{ 
    try 
    {    
     JFileChooser fileChooser=new JFileChooser(); 
     //fileChooser.setFileFilter(new filter()); 
     fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
     int result=fileChooser.showSaveDialog(this); 

     if(result!=JFileChooser.CANCEL_OPTION) 
     { 
      String path= fileChooser.getSelectedFile().getPath(); 
      ExportContacts ex=new ExportContacts(); 
      //CL is object of the class that save the contacts 
      List<Contact> c=CL.getContactsList(); 
      ex.ExportConacts(path, c); 
      JOptionPane.showMessageDialog(null, "Contacts Exported Successfully !"); 
     } 
    } 
    catch (Exception e) 
    { 
     JOptionPane.showMessageDialog(null, e.getMessage()); 
    } 
} 
+3

什么类型'Exception'被抛出? – twain249 2012-04-03 17:13:09

+0

文件中的错误消息可能很有用。 – ewanm89 2012-04-03 17:14:33

+0

我的水晶球说** Contact **没有实现** java.io.Serializable **接口。 – 2012-04-03 17:14:48

回答

2

A. Contact必须实现Serializable(你有没有显示Contact代码)
B.不要序列每个Contact,只是序列化整个List

+2

10我猜你必须有一个非常可靠的水晶球? – ewanm89 2012-04-03 17:20:01