将ArrayList写入文件的异常
问题描述:
我在写一个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());
}
}
答
A. Contact
必须实现Serializable
(你有没有显示Contact
代码)
B.不要序列每个Contact
,只是序列化整个List
+2
10我猜你必须有一个非常可靠的水晶球? – ewanm89 2012-04-03 17:20:01
什么类型'Exception'被抛出? – twain249 2012-04-03 17:13:09
文件中的错误消息可能很有用。 – ewanm89 2012-04-03 17:14:33
我的水晶球说** Contact **没有实现** java.io.Serializable **接口。 – 2012-04-03 17:14:48