简体   繁体   English

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

[英]Serialize and Saving an ArrayList of double [] in Java

I want to serialize and save an arraylist that contains a double [] arraylist in java. 我想序列化并保存一个包含Java中的double [] arraylist的arraylist。 Here is my code. 这是我的代码。

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();
    }       
}

But I get an error and following is the stack trace. 但是我收到一个错误,下面是堆栈跟踪。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source) at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source) at java.io.ObjectOutputStream.(Unknown Source) at com.fyp.imur2.SaveArrayListToFile.writeArrayListToFile(SaveArrayListToFile.java:24) at com.fyp.imur2.JPanelJFreeChart.btnSaveGestureCollectionActionPerformed(JPanelJFreeChart.java:380) at com.fyp.imur2.JPanelJFreeChart.access$5(JPanelJFreeChart.java:375) at com.fyp.imur2.JPanelJFreeChart$6.actionPerformed(JPanelJFreeChart.java:166) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unkn 线程“ AWT-EventQueue-0”中的异常java.io.ObjectOutputStream $ BlockDataOutputStream.drain(java.io.ObjectOutputStream $ BlockDataOutputStream.setBlockDataMode(Unknown Source)处的java.io.ObjectOutputStream $ java.lang.NullPointerException。 (未知来源)com.fyp.imur2(JPanelJFreeChart.java:380)com.fyp.imur2.JPanelJFreeChart.btnSaveGestureCollectionActionPerformed(JPanelJFreeChart.java:380)com.fyp.imur2.SaveArrayListToFile.writeArrayListToFile(SaveArrayListToFile.java:24) JPanelJFreeChart.java:375)(位于com.fyp.imur2.JPanelJFreeChart $ 6.actionPerformed(JPanelJFreeChart.java:166)位于javax.swing.AbstractButton.fireActionPerformed(未知源),javax.swing.AbstractButton $ Handler.actionPerformed(未知源)在javax.swing.DefaultButtonModel.fireActionPerformed(未知源)在javax.swing.DefaultButtonModel.setPressed(未知源)在javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知源)在java.awt.Component.processMouseEvent(Unkn own Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doInt javax.swing.JComponent.processMouseEvent(未知源)java.awt.Component.processEvent(未知源)java.awt.Container.processEvent(java.awt.Component.dispatchatchEventImpl(未知源) )处java.awt.LightweightDispatcher.processMouseEvent(未知源)处java.awt.Component.dispatchEventImpl(未知源)处java.awt.LightweightDispatcher.retargetMouseEvent(未知源)处的java.awt.Container.dispatchEventImpl(未知源) java.awt.Component.dispatchEvent(未知源)处java.awt.Window.dispatchEventImpl(未知源)处java.awt.Container.dispatchEventImpl(未知源)处的java.awt.LightweightDispatcher.dispatchEvent(未知源)。 awt.EventQueue.dispatchEventImpl(未知源)在java.awt.EventQueue.access $ 200(未知源)在java.awt.EventQueue $ 3.run(未知源)在java.awt.EventQueue $ 3.run(未知源) .security.AccessController.doPrivileged(原生方法),位于java.security.ProtectionDomain $ 1.doInt ersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) ersectionPrivilege(未知源)(位于java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知源)在java.awt.EventQueue $ 4.run(未知源)在java.awt.EventQueue $ 4.run(java.security.AccessController处) .doPrivileged(本机方法)(java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知源)在java.awt.EventQueue.dispatchEvent(未知源)在java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)在java.awt.EventDispatchThread。 java.awt.EventDispatchThread.pumpEvents(未知源)处java.awt.EventDispatchThread.pumpEvents(未知源)处java.awt.EventDispatchThread.pumpEvents(未知源)处java.awt.EventDispatchThread.run(未知源)来源不明)

Can someone help me to solve this issue? 有人可以帮我解决这个问题吗? Any help would be appreciated. 任何帮助,将不胜感激。 Thanks in advance. 提前致谢。

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

objectOutputStream = new ObjectOutputStream(fileOutputStream);

on the line 在线上

objectOutputStream = new ObjectOutputStream(objectOutputStream);

You try to call the constructor with the objectOutputStream object, which is null. 您尝试使用objectOutputStream对象调用构造函数,该对象为null。 Looks like you meant to call it with fileOutputStream, like this: 看起来您打算用fileOutputStream调用它,如下所示:

objectOutputStream = new ObjectOutputStream(fileOutputStream);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM