ObjectOutputStream不会保存我的arrayList

时间:2013-04-11 10:41:37

标签: java arraylist objectoutputstream

我在UserArchive类中有这个arrayList,在MainWindow类中有一个saveFile()方法。 我的问题是每次关闭程序时,src / customerlist.txt中显示的所有内容都是:  ¨ÌsrUserArchiveYï≈ùÅ-ÀDLlisttLjava/ util的/ ArrayList中;xpsrjava.util.ArrayListxÅ“ô«aùIsizexpw X

继承我的代码:有人能发现任何问题吗?

public class UserArchive implements Serializable {
ArrayList<User> list = new ArrayList<User>();

public void regCustomer(User u) {
    list.add(u);
}

    public String toString() {
    sorter();
    String users = "";
    Iterator<User> iterator = list.iterator();

    while (iterator.hasNext()) {
        users += iterator.next().toString() + "\n";
    }
    return users;
}

MainWindow类:

public class MainWindow extends JFrame {
private SaleWindow sW;
private UserArchive userA;
int customerID = 0;

////

    public void saveFile() {
    try {
        FileOutputStream outStream = new FileOutputStream(
                "src/customerlist.txt");
        ObjectOutputStream utfil = new ObjectOutputStream(outStream);
        utfil.writeObject(userA);
        utfil.close();
    } catch (NotSerializableException nse) {
        JOptionPane
                .showMessageDialog(this, "Objektet er ikke serialisert!");
    } catch (IOException ioe) {
        JOptionPane
                .showMessageDialog(this, "Problem med utskrift til fil!");
    }
}

2 个答案:

答案 0 :(得分:1)

是的,因为ObjectOutputStream以二进制形式序列化对象。如果您想要以某种ASCII格式进行序列化,请尝试使用JSON Serializer,例如Jackson

答案 1 :(得分:0)

请看一下Javas序列化机制。您不是以二进制形式编写字符串内容,而是编写字符串对象(和环绕列表)。

如果你想要做的只是写一个纯文本文件,那么ObjectOutputStream是错误的选择。仔细看看java.io.FileWriter或java.io.PrintWriter。