java - 使用 FileOutputStream 保存 HashMap

标签 java serialization fileoutputstream

我正在尝试使用 FileOutputStream 编写 HashMap。 这就是我的代码的样子。

    public class ObjectStream implements Serializable{
        public void serialize(HashMap<String, Mat> obj){
            try {
                FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Juergen\\fileoutputstream.txt");
                ObjectOutputStream out = new ObjectOutputStream(fileOutput);
                out.write(obj);
                out.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 

        }
}

问题是“write”函数不适用于该参数。我能做什么?谢谢

最佳答案

除了前面的答案之外,还必须额外提及的是,Mat 类源自 OpenCV。根据其 Javadoc,它没有实现 Serialized 接口(interface)。因此,它无法通过 Java 中的对象序列化正确序列化。

基本上,您可以使用第三方对象序列化库,该库支持序列化,而无需实现 Serialized。相关:Serializing a class, which does not implement Serializable

保存数据的另一种方法是在 CSVXML 中实现您自己的自定义文件格式。例如:

key1
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1

key2
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 1 1 1

这可以使用 Apache Commons IO 类或 JDK 基本文件 io 轻松解析/编写。

关于java - 使用 FileOutputStream 保存 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34268652/

相关文章:

java - 在Java中通过Inputstream读取内容时删除列名

java - 如何将参数传递给验证Spring Webflow的方法?

java - 安卓 : RSA Encrypt and Decrypt but when call it error

java - 为什么序列化 Integer 会产生太多开销?

c# - 序列化包含字典成员的类

c++ - boost opencv类型的序列化

关于 FileOutputStream 的 java OutOfMemoryError?

java - 在 java server faces 中显示删除线数据

java - Oracle JDBC : underflow in double

Android FileOutputStream 位置保存文件