java - 将 ArrayList 保存到文件

标签 java serialization

我有一个 Arraylist,我想将其保存在一个文件中以便下次在应用程序中使用,我已经阅读了几个可以使用此代码来执行此操作的地方,但它不起作用,它返回一个打印出 3 后立即出错:

 private void savegame(){
    try {System.out.println("1");
        FileOutputStream preout = new FileOutputStream(new File("savedgame.ser"));
        System.out.println("2");
        ObjectOutputStream out = new ObjectOutputStream(preout);
        System.out.println("3");
        out.writeObject(kortene);
        System.out.println("4");
        out.close();
        System.out.println("5");
        preout.close();
        System.out.println("6");
        output = new FileWriter(new File("saved game settings.txt"));
        System.out.println("7");
        output.write(Indstillinger.BilledeMappe+"\n"+Indstillinger.AntalKort+
                "\n"+Indstillinger.AntalSpillere+"\n"+clicks+"\n"+Score);
        System.out.println("8");
        output.close();
        System.out.println("game save success");
    }catch (Exception e) {
        System.out.println("game save failed");
    }

“kortene”是一个像这样创建的ArrayList:

public static ArrayList<Kort> kortene = new ArrayList<Kort>();

Kort 是我制作的一个类,但我认为这与这个问题无关..

我得到的错误是:java.io.NotSerializedException: java.awt.image.BufferedImage

但我没有 BufferedImage,我只是在每个类中都有一个普通图像......

最佳答案

相信编译器:如果它说它使用 BufferedImage 将图像保存在内存中,那么这是真的。 javadoc 说它不是可序列化的:

http://download.oracle.com/javase/1.5.0/docs/api/java/awt/image/BufferedImage.html

您可以将图像标记为 transient ,并在稍后反序列化时从文件系统重新初始化它们。尝试一下。

关于java - 将 ArrayList 保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770198/

相关文章:

java - 在 AsyncTask 执行方法中传递单选按钮代码

python - 使用 Cython 时,可以替代在 PySpark mapPartitions 中使用嵌套函数吗?

java - HtmlUnit HtmlSubmitInput.click() 结果 "Incorrect URL"更正为 "cgi-bin",然后导致 UnknownHostException

java - ImageIO.read 返回 NULL,没有错误

java - Barcode4j 不工作(在 Unix 上)

c# - 序列化/反序列化的 XML 与二进制性能

.net - RestSharp for JSON 中的属性映射不起作用

c# - 为什么在 WCF 反序列化程序初始化对象时不调用抽象基类的构造函数?

c# - 如果其中一个 Json 键包含一个点,如何为 Json 序列化声明匿名类型?

java - 使用 Apache POI 创建的单元格评论具有透明背景