1

我找到了从文件(在磁盘上)读取 hashMap 的代码:

public HashMap<String, Integer> load(String path)
{
    try
    {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
        Object result = ois.readObject();
        //you can feel free to cast result to HashMap<String, Integer> if you know that only a HashMap is stored in the file
        return (HashMap<String, Integer>)result;
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

但我没有找到任何示例该文件的外观如何。你能用一个例子来解释一下吗?

4

4 回答 4

4

您需要使用(请参阅此处ObjectOutputStream的文档)将其写出来。

于 2012-10-23T11:08:49.370 回答
0

有问题的文件只不过是一个序列化的 HashMap。

想看的话,先序列化一个HashMap,找出来。

要序列化,您可以使用以下代码:

HashMap<String,Integer> aHashMap = new HashMap<String,Integer>();  
aHashMap.put("one",1);   
aHashMap.put("two",2);
aHashMap.put("three",3);

File file = new File("serialized_hashmap");   
FileOutputStream fos = new FileOutputStream(file);   
ObjectOutputStream oos = new ObjectOutputStream(fos);           
oos.writeObject(aHashMap); 
oos.flush();

现在,file您可以将其与您提供的程序一起使用。

于 2012-10-23T11:11:21.557 回答
0

这是序列化对象的典型问题

    import java.io.*; 
    public class SerializationDemo { 
    public static void main(String args[]) { 
    // Object serialization 
    try { 
    MyClass object1 = new MyClass("Hello", -7, 2.7e10); 
    System.out.println("object1: " + object1); 
    FileOutputStream fos = new FileOutputStream("serial"); 
    ObjectOutputStream oos = new ObjectOutputStream(fos); 
    oos.writeObject(object1); 
    oos.flush(); 
    oos.close(); 
    } 
    catch(Exception e) { 
    System.out.println("Exception during serialization: " + e); 
    System.exit(0); 
    }
}

当然 MyClass 应该实现可序列化的接口

class MyClass implements Serializable { 
String s; 
int i; 
double d; 
public MyClass(String s, int i, double d) { 
this.s = s; 
this.i = i; 
this.d = d; 
} 
public String toString() { 
return "s=" + s + "; i=" + i + "; d=" + d; 
} 
}

执行此操作并查看文件

于 2012-10-23T11:11:57.543 回答
-1

此示例使用序列化,这是一种将其状态转换为字节流的技术,以便可以将字节流恢复为对象的副本。

因此,创建这样一个文件的方法是先序列化一个HashMap<String, Integer>,如下所示:

public void serializeHashMap(HashMap<String, Integer> m) {
    FileOutputStream fos = new FileOutputStream("hashmap.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);

    oos.writeObject(m);
    oos.close();
}

(这不包括异常处理和其他东西,但你明白了......)

于 2012-10-23T11:11:49.527 回答