在 Java 中序列化和保存 double [] 的 ArrayList
Posted
技术标签:
【中文标题】在 Java 中序列化和保存 double [] 的 ArrayList【英文标题】:Serialize and Saving an ArrayList of double [] in Java 【发布时间】:2014-11-30 02:38:22 【问题描述】:我想在 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();
但是我得到一个错误,下面是堆栈跟踪。
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 java.io.ObjectOutputStream$BlockDataOutputStream.drain(未知来源) 在 java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(未知来源) 在 java.io.ObjectOutputStream.(未知来源) 在 com.fyp.imur2.SaveArrayListToFile.writeArrayListToFile(SaveArrayListToFile.java:24) 在 com.fyp.imur2.JPanelJFreeChart.btnSaveGestureCollectionActionPerformed(JPanelJFreeChart.java:380) 在 com.fyp.imur2.JPanelJFreeChart.access$5(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(未知来源) 在 javax.swing.JComponent.processMouseEvent(未知来源) 在 java.awt.Component.processEvent(未知来源) 在 java.awt.Container.processEvent(未知来源) 在 java.awt.Component.dispatchEventImpl(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.processMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.dispatchEvent(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Window.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.EventQueue.dispatchEventImpl(未知来源) 在 java.awt.EventQueue.access$200(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知来源) 在 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.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源)
有人可以帮我解决这个问题吗?任何帮助,将不胜感激。提前致谢。
【问题讨论】:
【参考方案1】:在构造ObjectOutputStream的实例时需要传递fileOutputStream
objectOutputStream = new ObjectOutputStream(fileOutputStream);
【讨论】:
【参考方案2】:上线
objectOutputStream = new ObjectOutputStream(objectOutputStream);
您尝试使用 objectOutputStream 对象调用构造函数,该对象为空。看起来你打算用 fileOutputStream 来调用它,像这样:
objectOutputStream = new ObjectOutputStream(fileOutputStream);
【讨论】:
以上是关于在 Java 中序列化和保存 double [] 的 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章
Java Spark 如何将 JavaPairRDD<HashSet<String>, HashMap<String, Double>> 保存到文件中?