当前位置: 首页 > 知识库问答 >
问题:

在Java中序列化并保存double[]的ArrayList

慕容文昌
2023-03-14

我想在java中序列化并保存一个包含双[]数组列表的数组列表。这是我的代码。

FileOutputStream fileOutputStream = null; 
ObjectOutputStream objectOutputStream = null; 
FileInputStream fileInputStream = null; 
ObjectInputStream objectInputStream = null; 

public void writeArrayListToFile(ArrayList<ArrayList<double []>> arraylist, String outputFilePath){

    System.out.println("Start saving the file at  : " + outputFilePath);

    try {
        fileOutputStream = new FileOutputStream(outputFilePath , true);
        objectOutputStream = new ObjectOutputStream(objectOutputStream);
        objectOutputStream.writeObject(arraylist);
        System.out.println("Arraylist Saved Successfully...");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
}

但我得到一个错误,下面是堆栈跟踪。

java线程“AWT-EventQueue-0”中出现异常。java上的lang.NullPointerException。伊奥。ObjectOutputStream$BlockDataOutputStream。java上的drain(未知源代码)。伊奥。ObjectOutputStream$BlockDataOutputStream。java上的setBlockDataMode(未知源)。伊奥。ObjectOutputStream。(来源不详)com。fyp。imur2。SaveArrayListFile。writeArrayListToFile(SaveArrayListToFile.java:24)位于com。fyp。imur2。JPanelJFreeChart。btnSaveGestureCollectionActionPerformed(JPanelJFreeChart.java:380)在com上。fyp。imur2。JPanelJFreeChart。在com上访问5美元(JPanelJFreeChart.java:375)。fyp。imur2。JPanelJFreeChart 6美元。在javax上执行的操作(JPanelJFreeChart.java:166)。摆动抽象按钮。fireActionPerformed(未知源代码)在javax上执行。摆动AbstractButton$Handler。在javax上执行的操作(未知源)。摆动DefaultButtonModel。fireActionPerformed(未知源代码)在javax上执行。摆动DefaultButtonModel。setPressed(未知源代码)位于javax。摆动普拉夫。基本的基本按钮列表。java上的MouseRelease(未知源代码)。awt。组成部分javax上的processMouseEvent(未知源代码)。摆动JComponent。java上的ProcessMouseeEvent(未知源代码)。awt。组成部分java上的processEvent(未知源)。awt。容器java上的processEvent(未知源)。awt。组成部分java上的dispatchEventImpl(未知源代码)。awt。容器java上的dispatchEventImpl(未知源代码)。awt。组成部分java上的dispatchEvent(未知源)。awt。轻量级调度员。java上的retargetMouseEvent(未知源代码)。awt。轻量级调度员。java上的ProcessMouseeEvent(未知源代码)。awt。轻量级调度员。java上的dispatchEvent(未知源)。awt。容器java上的dispatchEventImpl(未知源代码)。awt。窗java上的dispatchEventImpl(未知源代码)。awt。组成部分java上的dispatchEvent(未知源)。awt。事件队列。java上的dispatchEventImpl(未知源代码)。awt。事件队列。在java上访问200美元(未知来源)。awt。事件队列3美元。在java上运行(未知源代码)。awt。事件队列3美元。在java上运行(未知源代码)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。awt。事件队列4美元。在java上运行(未知源代码)。awt。事件队列4美元。在java上运行(未知源代码)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。awt。事件队列。java上的dispatchEvent(未知源)。awt。EventDispatchThread。java上的pumpOneEventForFilters(未知源代码)。awt。EventDispatchThread。java上的pumpEventsForFilter(未知源代码)。awt。EventDispatchThread。java上的pumpEventsForHierarchy(未知源代码)。awt。EventDispatchThread。java上的pumpEvents(未知源)。awt。EventDispatchThread。java上的pumpEvents(未知源)。awt。EventDispatchThread。运行(未知源)

有人能帮我解决这个问题吗?任何帮助都将不胜感激。提前谢谢。

共有2个答案

左丘嘉木
2023-03-14

在线上

objectOutputStream = new ObjectOutputStream(objectOutputStream);

尝试使用objectOutputStream对象调用构造函数,该对象为null。看起来你想用fileOutputStream调用它,如下所示:

objectOutputStream = new ObjectOutputStream(fileOutputStream);
申屠飞
2023-03-14

在构造ObjectOutputStream实例时需要传递fileOutputStream

objectOutputStream = new ObjectOutputStream(fileOutputStream);
 类似资料:
  • 问题内容: 我必须报价, 1.将帐户保存到二进制(序列化)文件中。2.从二进制(序列化)文件加载(重新创建)帐户。 因此,首先,我正在查找确切的例子,而我却迷失了自己,在同样的情况下,人们提到xml,在我的脑海中,我认为它的意思像01010011000(二进制),而当我查看其他代码时,它看起来就像是正常的文本文件保存。 他到底是什么意思,有人可以举一个例子,或者给我一个更好地阐明这一点的网站吗?一

  • 我想构造一个具有以下行为的对象: 我尝试了这个代码(对不起,我只有一部分,如果需要,我会尽快剩下的) 我对有问题,我不知道如何管理它。我有一些想法,但所有的想法都是关于一个一个地做,如果可能的话,我宁愿避免这样做

  • 问题内容: 关于JPA,我有以下问题: 我可以将元素的顺序保存在java.util.List中吗?在我的应用程序中,将元素放入列表的顺序很重要,但是从数据库中获取这些集合后,顺序却不一样(符合预期)。您能告诉我解决这个问题的方法吗? PS:我放入集合中的实体中没有字段可用来订购它们。 罗森 问题答案: 在JPA 1中,有一些骇人听闻的方法可以做到这一点,但是切换到JPA 2提供程序是最容易的。您正

  • Json序列化和Jdk序列化在存储、效率上的对比? 在之前学习Redis时,我了解的是Json序列化比原生Jdk更高效,占用空间更小,所以无脑选择Json序列化。 但是最近我在看Pig开源框架中Oauth2的时候,发现存入Token令牌居然是用的Jdk序列化方式,我很疑惑,于是自己再用Json的方式去存,看看到底会有什么区别。 结果发现Json方式占用空间比Jdk的大了很多(Jdk为17)。 我又

  • 问题内容: 我已经开始在我的第一个android应用程序上进行工作,并且具有处理多层图像的应用程序。我能够将项目文件的平面版本导出为PNG,但我希望能够保存分层图像以供以后编辑(包括应用于某些层的任何选项,例如基于文本的层)。 无论如何,我已经确保需要写入文件的类是“可序列化的”,但是由于android.graphics.Bitmap不可序列化这一事实而遇到了一些障碍。以下代码实质上将位图作为PN

  • 问题内容: 如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。 问题答案: 您不能序列化未实现的类,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现和,以便可以以自定义方式序列化其对象。 首先,使您的非序列化字段。 在中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。 在中,首先调用流以读