首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java序列化对象

Java序列化对象
EN

Stack Overflow用户
提问于 2015-03-30 10:21:45
回答 1查看 886关注 0票数 0

对于我的android项目,我需要序列化一个用户对象。这样做的目的是保存和加载这个对象,因此当应用程序关闭(被销毁)时,对象和它的属性被保存并存储在一个文件中。我的问题是,加载对象时会出现错误。它说没有这样的文件或目录名为'save.bin',尽管我试图创建它。这是我的代码:

代码语言:javascript
复制
    public class SaveAndLoadManager{
        public void save(Object object){
            Log.d("Save", "saving object");
            try{
                File userInfo = new File("save.bin");
                FileOutputStream fileOutputStream = new FileOutputStream(userInfo);
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
                objectOutputStream.writeObject(object);
                objectOutputStream.close();
                Log.d("Save", "object saved");
            }catch(FileNotFoundException e){
                Log.e("Save", e.getMessage());
            }catch(IOException e){
                Log.e("Save", e.getMessage());
            }
        }
        public Object load(){
            Log.d("Load", "loading object");
            Object object = null;
            try{
                FileInputStream fileInputStream = new FileInputStream("save.bin");
                ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
                object = objectInputStream.readObject();
                objectInputStream.close();
                Log.d("Load", "object loaded");
            }catch(FileNotFoundException e){
                Log.e("Load", e.getMessage());
            }catch(StreamCorruptedException e){
                Log.e("Load", e.getMessage());
            }catch(Exception e){
                Log.e("Load", e.getMessage());
            }
            return object;
        }
    }

如何正确创建目录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 10:26:58

假设User正在实现Serialazible

代码语言:javascript
复制
File userInfo = new File("save.bin");

您可以考虑上面的行,就像一个名为"save.bin"的文件对象,存储在文件系统上的根(/)中。应用程序不能写入此位置。您的应用程序拥有两个写入位置的权限,一个存储在/data/data/yourapp下,另一个存储在/sdcard/Android/data/yourapp上。两者都应该通过公共api进行访问。例如,可以使用对openFileOutput检索FileOutputStream/FileInputStream

代码语言:javascript
复制
FileOutputStream fileOutputStream = openFileOutput("save.bin", Context.MODE_PRIVATE)
FileInputStream fileInputStream = openFileInput("save.bin");

正如@androidLerner在他的评论中提到的,您可以找到更多的信息这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29343733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档