Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ObjectOutputStream赢得';我不能保存我的arrayList_Java_Arraylist_Objectoutputstream - Fatal编程技术网

Java ObjectOutputStream赢得';我不能保存我的arrayList

Java ObjectOutputStream赢得';我不能保存我的arrayList,java,arraylist,objectoutputstream,Java,Arraylist,Objectoutputstream,我在UserArchive类中有这个arrayList,在MainWindow类中有一个saveFile()方法。 我的问题是,每次我关闭程序时,src/customerlist.txt中显示的所有内容都是: Ìsr UserArchiveYï≈ùÅ-ÀDLlisttLjava/util/ArrayList;xpsrjava.util.ArrayListxÅ«aùIsizexpw 十, 这是我的密码:有人能发现任何问题吗 public class UserArchive implements

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

这是我的密码:有人能发现任何问题吗

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;
}
////


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

请看一下Java的序列化机制。您不是在编写字符串内容,而是在编写字符串对象(以及源代码列表)以二进制形式


如果您只想编写纯文本文件,那么ObjectOutputStream是错误的选择。请仔细查看java.io.FileWriter或java.io.PrintWriter。

因此,我无法使用ObjectOutputStream保存它?这是我以前一直做的事情。这是一个学校项目,我们假设使用ObjectOutputStream。您可以保存它并使用ObjectOutputStream/ObjectInputStream加载它,但不是以文本形式加载,而是以二进制形式加载,这样只会使您失去将其作为文本文件查看/编辑的能力。如果您想以文本形式存储它,您需要使用FileWriter/FileReader并编写自己的序列化机制。我认为我不需要将其作为文本文件查看/编辑。我所需要的是d是保存它,这样我可以在关闭程序后打开程序时再次将其打印到屏幕上。这样就没有任何问题了,但是使用.bin或其他东西来显示它是二进制文件,并使用ObjectInputStream将其加载回。
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!");
    }
}