java HashMap到文件和文件到HashMap的输出为空

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

嘿,伙计们,我是一个新手,在这个论坛上,我想创建一个登录镜像。因为我的老师,我不得不使用BlueJ,是的,。。我想这可能不是学习写作的最好方法之一(我们在学校使用的版本在编译之前甚至没有显示错误)(我个人开始用Eclipse写作)

我的问题是,在我将HashMap“保存”到一个新文件中并在另一个HashMap中“写入”之后,我从hasMapReader获得的输出只是空的

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));