java HashMap到文件和文件到HashMap的输出为空
嘿,伙计们,我是一个新手,在这个论坛上,我想创建一个登录镜像。因为我的老师,我不得不使用BlueJ,是的,。。我想这可能不是学习写作的最好方法之一(我们在学校使用的版本在编译之前甚至没有显示错误)(我个人开始用Eclipse写作) 我的问题是,在我将HashMap“保存”到一个新文件中并在另一个HashMap中“写入”之后,我从hasMapReader获得的输出只是空的java HashMap到文件和文件到HashMap的输出为空,java,null,hashmap,fileinputstream,fileoutputstream,Java,Null,Hashmap,Fileinputstream,Fileoutputstream,嘿,伙计们,我是一个新手,在这个论坛上,我想创建一个登录镜像。因为我的老师,我不得不使用BlueJ,是的,。。我想这可能不是学习写作的最好方法之一(我们在学校使用的版本在编译之前甚至没有显示错误)(我个人开始用Eclipse写作) 我的问题是,在我将HashMap“保存”到一个新文件中并在另一个HashMap中“写入”之后,我从hasMapReader获得的输出只是空的 HashMap<String, Serializable> userAcc = new HashMap<St
HashMap<String, Serializable> userAcc = new HashMap<String, Serializable>();
userAcc.put(name, value);
otherClass.hashMapSaver(userAcc, hashMapFile = new java.io.File(location));
public HashMap<String, Serializable> hashMapSaver(HashMap<String, Serializable> map, java.io.File file){
try{
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(map);
s.close();
f.close();
}catch (IOException e) {
e.printStackTrace();
}
return map;
}
HashMap<String, Serializable> userAcc2 = new HashMap<String, Serializable>();
otherClass.hashMapReader(userAcc2, new java.io.File(hashMapFile));
HashMap userAcc=newhashmap();
userAcc.put(名称、值);
hashMapSaver(userAcc,hashMapFile=newjava.io.File(location));
公共HashMap hashMapSaver(HashMap,java.io.File文件){
试试{
FileOutputStream f=新的FileOutputStream(文件);
ObjectOutputStream s=新的ObjectOutputStream(f);
s、 写对象(map);
s、 close();
f、 close();
}捕获(IOE){
e、 printStackTrace();
}
返回图;
}
HashMap userAcc2=新的HashMap();
hashMapReader(userAcc2,新的java.io.File(hashMapFile));
(userAcc2在第三个“主”类中)
然后,另一个类中的hashMapReader:
public HashMap<String, Serializable> hashMapReader(HashMap<String, Serializable> map2, java.io.File file){
try{
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
map2 = (HashMap<String, Serializable>) s.readObject();
f.close();
s.close();
}catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
c.printStackTrace();
return null;
}
return map2;
}
System.out.println("userAcc2: " + userAcc2.get(name));
System.out.println("HashMap Keys: " + userAcc2.keySet());
公共HashMap hashMapReader(HashMap map2,java.io.File){
试试{
FileInputStream f=新的FileInputStream(文件);
ObjectInputStream s=新ObjectInputStream(f);
map2=(HashMap)s.readObject();
f、 close();
s、 close();
}捕获(IOE){
e、 printStackTrace();
返回null;
}捕获(ClassNotFoundException c){
c、 printStackTrace();
返回null;
}
返回map2;
}
System.out.println(“userAcc2:+userAcc2.get(name));
System.out.println(“HashMap键:+userAcc2.keySet());
但控制台只是打印出:
userAcc2:null;
HashMap键:[]
我认为另一个问题是,每次启动这个程序时,文件都可能被替换
我现在正在努力解决这个问题,差不多一个星期了
谢谢:),您
map2
是hashMapReader
中的一个参数,但在该方法中,您执行以下赋值:
map2 = (HashMap<String, Serializable>) s.readObject();
作为旁注,map2
参数完全没有必要,因为您并没有使用正在传递的对象。稍微干净一点的是:
public HashMap<String, Serializable> hashMapReader(java.io.File file){
HashMap<String, Serializable> map2 = null;
try{
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
map2 = (HashMap<String, Serializable>) s.readObject();
f.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
c.printStackTrace();
return null;
}
return map2;
}
...
userAcc2 = otherClass.hashMapReader(new java.io.File(hashMapFile));
公共HashMap hashMapReader(java.io.File文件){
HashMap map2=null;
试试{
FileInputStream f=新的FileInputStream(文件);
ObjectInputStream s=新ObjectInputStream(f);
map2=(HashMap)s.readObject();
f、 close();
s、 close();
}捕获(IOE){
e、 printStackTrace();
返回null;
}捕获(ClassNotFoundException c){
c、 printStackTrace();
返回null;
}
返回map2;
}
...
userAcc2=otherClass.hashMapReader(新的java.io.File(hashMapFile));
在catch块中引入null。(1) 是否正在引发异常?(2) 该方法是否确实被调用?创建的打印行中引用的变量在哪里?有关如何调试代码的提示,请阅读。
public HashMap<String, Serializable> hashMapReader(java.io.File file){
HashMap<String, Serializable> map2 = null;
try{
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
map2 = (HashMap<String, Serializable>) s.readObject();
f.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
c.printStackTrace();
return null;
}
return map2;
}
...
userAcc2 = otherClass.hashMapReader(new java.io.File(hashMapFile));