android保存序列化对象的地方?

时间:2011-09-07 12:19:37

标签: java android serialization

我正在寻找序列化后对象的地方?我想将序列化对象(在另一个应用程序中创建)放到我的android项目中,然后只在我的游戏中加载这些文件。问题是我不知道在哪里放这个对象?即使我从Android应用程序保存对象它永远不会保存在我的项目文件夹中。我的加载和保存对象的功能

public static void save(Context context, Map obj, String nazwa)
{
   FileOutputStream str = null;
   ObjectOutputStream objStr = null;


   try {
     str = context.openFileOutput(nazwa, Context.MODE_PRIVATE);
     objStr = new ObjectOutputStream(str);

     objStr.writeObject(obj);

    } catch (FileNotFoundException e)
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    } finally
    {
        try
        {
            if (objStr != null) objStr.close();
        } catch (IOException e) {}
        try
        {
           if (str != null) str.close();
        } catch (IOException e) {}
    }


}



public static Map load(Context context, String nameFile)
     {
        Map obj = null;
        FileInputStream str_w = null;
        ObjectInputStream obj_w = null;
        try
        {
           str_w = context.openFileInput(nameFile);
           obj_w = new ObjectInputStream(str_w);
           obj = (Map) obj_w.readObject();

    } catch (FileNotFoundException e)
    {
       e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    } catch (ClassNotFoundException e)
    {
       e.printStackTrace();
    } finally
    {
        try
        {
           if (obj_w != null) obj_w.close();
        } catch (IOException e) {}
        try
        {
           if (str_w != null) str_w.close();
        } catch (IOException e) {}
    }
    return obj;
 }

如果我将目标文件复制到/ levels /并使用

final Map map2 = MapManager.load(this, "/levels/map1.lvl");

final Map map2 = MapManager.load(this, "levels/map1.lvl");

它永远不会起作用

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您将它们作为应用专用文件(Context.MODE_PRIVATE)存储到只有应用有权访问的文件夹中,因此其他任何应用都无法访问它们。

我认为存储它们以便在应用程序之间共享的最简单方法是使用以下方法将它们存储到SD卡中:

Environment.getExternalStorageDir();

请注意将它们存储为全局可读。