java如何读取写在文件中的LinkedHashMap?
我想从LinkedHashMap中读取以。txt文件,但显示“java.io.StreamCorruptedException:无效流头:7B495020”
为了在LinkedHashMap中写作,我尝试了这种方法
public void WriteBasicInfo(String name, String pass) throws IOException, ParseException {
Map<String, String> m;
try {
m = new LinkedHashMap<String, String>();
m.put("Name", name);
m.put("Password", pass);
BufferedWriter bw = new BufferedWriter(new FileWriter(FILE_NAME, false));
bw.write(m.toString());
bw.flush();
bw.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
并成功写入文件。但是当我试图用这种方法阅读上面的hashmap时
public void readBasicInfo() throws IOException, ParseException, InvocationTargetException, ClassNotFoundException
{
ObjectInputStream is = new ObjectInputStream(new FileInputStream(FILE_NAME));
Map<String, String> myMap=(LinkedHashMap<String, String>) is.readObject();
for(Map.Entry<String,String> m :myMap.entrySet()){
System.out.println(m.getKey()+" : "+m.getValue());
// String val1=m.get("Name");
}
ois.close();
}
它显示“java.io.StreamCorruptedException:invalid stream header:7B495020”,并且没有读取任何数据
我试着阅读hashmap中写的所有条目,以检查它是否正在阅读;但实际上我只想在hashmap中存储只读的“name”条目
# 1 楼答案
你很简单:以字符串的形式写,但读回时需要一个二进制序列化对象
你知道,这就像:你把一个鸡蛋放在一个盒子里,然后你希望你能打开盒子,把牛奶从里面倒进杯子里!那不行
这里:
将地图作为原始字符串写入该文件。这意味着您的文件现在包含人类可读的字符串
但你会:
它期望文件包含序列化的对象
长话短说,以下是你的选择:
我的建议是:选择2或3。2为第三方库添加了依赖项,但我认为这是当今更“常见”的做法