Java Android:从文件中写入和读取

Java Android:从文件中写入和读取,java,android,file,Java,Android,File,我正试图在ObjectOutPutStream和ObjectInputStream的帮助下编写和阅读Hashmap。以下是我的两种方法: protected void saveHashMap(HashMap<String, Integer> newIDs){ if (fileIDs == null){fileIDs = new File("IDs.txt");} try { FileOutputStream fos = new FileOutputS

我正试图在
ObjectOutPutStream
ObjectInputStream
的帮助下编写和阅读
Hashmap
。以下是我的两种方法:

 protected void saveHashMap(HashMap<String, Integer> newIDs){
    if (fileIDs == null){fileIDs = new File("IDs.txt");}
    try {
        FileOutputStream fos = new FileOutputStream(fileIDs);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(newIDs);
        oos.close();
    }catch (IOException e){
        e.printStackTrace();
    }
}

protected HashMap readHashmap(){
    HashMap<String, Integer> map = null;
    if(fileIDs == null){fileIDs = new File("IDs.txt");}
    try{
        FileInputStream fis = new FileInputStream(fileIDs);
        ObjectInputStream ois = new ObjectInputStream(fis);
        map = (HashMap) ois.readObject();
        ois.close();
        fis.close();
    }catch(IOException e){
        e.printStackTrace();
    }catch (ClassNotFoundException e){
        e.printStackTrace();
    }
    if(map != null){
        return map;
    }else{
        return new HashMap<String, Integer>();
    }
受保护的void saveHashMap(HashMap newIDs){
如果(fileIDs==null){fileIDs=新文件(“IDs.txt”);}
试一试{
FileOutputStream fos=新的FileOutputStream(FileID);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
oos.writeObject(newid);
oos.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
受保护的HashMap readHashmap(){
HashMap=null;
如果(fileIDs==null){fileIDs=新文件(“IDs.txt”);}
试一试{
FileInputStream fis=新的FileInputStream(FileID);
ObjectInputStream ois=新ObjectInputStream(fis);
map=(HashMap)ois.readObject();
ois.close();
fis.close();
}捕获(IOE异常){
e、 printStackTrace();
}catch(classnotfounde异常){
e、 printStackTrace();
}
if(map!=null){
返回图;
}否则{
返回新的HashMap();
}

目前我遇到的问题是
readHashMap()
抛出一个
IOEXception
“未找到文件”。通过一个错误的实现,我必须在调用
writeHashmap()之前调用
readHashMap()
,但我不认为这是问题所在。我不确定为什么没有创建任何文件,因此我非常感谢您的帮助。如果您需要更多代码,我会添加它。

为什么要从空文件中读取某些内容?这没有意义。您必须使用上下文方法创建文件…而且,读取方法也不行如果没有任何问题,d将起作用。可能是我错了,但是您的代码实际上是在android设备的根目录下写入的,这可能是不允许的。如果您尝试写入具有写入外部存储权限的
新文件(Environment.getExternalStorageDirectory(),“IDs.txt”);
,它是否起作用。