2012-04-03 33 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

をシリアライズ、各ContactをシリアライズしないでくださいSerializable(あなたがContactのコードを示していない)
B.を実装する必要があります。 「例外」の例外がスローされますか? – twain249

+0

ファイル内のエラーメッセージが役に立ちます。 – ewanm89

+0

私のクリスタルボールは** Contact **はjava.io.Serializable **インターフェースを実装していないと言っています。 –

答えて

2

A. Contactだけでどのような種類の全体List

+2

あなたは非常に信頼性の高いクリスタルボールを持っている必要がありますか? – ewanm89

関連する問題