Java 使用.bin保存/加载HashMap publicmapbarrack=newhashmap(); SavingData.save(barrack,“barrack.bin”);//拯救 barrack=(Map)SavingData.load(“barrack.bin”);//负载 //BarrackData包含3个整数和1个字符串。 公共静态void save(对象obj,字符串路径)引发异常{ ObjectOutputStream oos=新的ObjectOutputStream(新文件输出流(路径)); oos.writeObject(obj); oos.flush(); oos.close(); } 公共静态对象加载(字符串路径)引发异常{ ObjectInputStream ois=新ObjectInputStream(新文件输入流(路径)); Object result=ois.readObject(); ois.close(); 返回结果; }

Java 使用.bin保存/加载HashMap publicmapbarrack=newhashmap(); SavingData.save(barrack,“barrack.bin”);//拯救 barrack=(Map)SavingData.load(“barrack.bin”);//负载 //BarrackData包含3个整数和1个字符串。 公共静态void save(对象obj,字符串路径)引发异常{ ObjectOutputStream oos=新的ObjectOutputStream(新文件输出流(路径)); oos.writeObject(obj); oos.flush(); oos.close(); } 公共静态对象加载(字符串路径)引发异常{ ObjectInputStream ois=新ObjectInputStream(新文件输入流(路径)); Object result=ois.readObject(); ois.close(); 返回结果; },java,serialization,hashmap,objectoutputstream,objectinputstream,Java,Serialization,Hashmap,Objectoutputstream,Objectinputstream,如何保存/加载HashMap。 我使用这种方法,但似乎有问题。 barrack.bin包含一些我无法理解的错误。 (java.io.NotSerializableException java.io.ObjectStreamException IOException SuppressedExceptions T)您的类BarrackData似乎没有实现java.io.Serializable。应该是这样的: public Map<String, BarrackData> barrack

如何保存/加载HashMap。
我使用这种方法,但似乎有问题。
barrack.bin包含一些我无法理解的错误。

(java.io.NotSerializableException java.io.ObjectStreamException IOException SuppressedExceptions T)

您的类
BarrackData
似乎没有实现
java.io.Serializable
。应该是这样的:

public Map<String, BarrackData> barrack = new HashMap<String, BarrackData>();
SavingData.save(barrack, "barrack.bin"); // save
barrack = (Map<String, BarrackData>)SavingData.load("barrack.bin"); // load
// BarrackData contains 3 int's and 1 String.

public static void save(Object obj, String path) throws Exception {
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
    oos.writeObject(obj);
    oos.flush();
    oos.close();
}

public static Object load(String path) throws Exception {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
    Object result = ois.readObject();
    ois.close();
    return result;
}
public class BarrackData implements Serializable {
   ...