日期:2014-05-20  浏览次数:20724 次

从文件中取出map中对象 总是空指针
Java code
public int Register(User u){    
        map=new HashMap<String, User>();
            try {
                dos=new ObjectOutputStream(new FileOutputStream("user.data"));
                dis=new ObjectInputStream(new FileInputStream("user.data"));
                
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        
            }           
        
        try {            
                map=(HashMap<String, User>)dis.readObject();
                    
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            int a=map.size();
            System.out.println(a+"!!!!!!!!!!!!!!!!!!!!");
        } catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }           
                         map.put(u.getUname(), u);             
                        try {
                            dos.writeObject(map);
                            dos.close();
                            dis.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            
                        }
                        return 1;    
                    
    }



这是一个注册功能 我想每次注册都取出map 然后再put进去一个新的值。
但是每次都是提示空指针。
System.out.println(a+"!!!!!!!!!!!!!!!!!!!!");

a永远是0.
是哪里出的错?谢谢各位大神

------解决方案--------------------
FileOutputStream 和 FileInputStream 不要同时打开!

1、先用FileInputStream把内容读取出来,然后关闭文件;
2、处理Map,增加值啥的;
3、最后用FileOutputStream,写入完毕后,再关闭文件。