Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android在哪里保存序列化对象?_Java_Android_Serialization - Fatal编程技术网

Java android在哪里保存序列化对象?

Java android在哪里保存序列化对象?,java,android,serialization,Java,Android,Serialization,我在找一个地方,序列化后对象在哪里?我想把序列化对象(在另一个应用程序中创建)放到我的android项目中,然后只在我的游戏中加载这些文件。问题是我不知道该把这些东西放在哪里?即使我从android应用程序中保存对象,它也不会保存在我的项目文件夹中。我的加载和保存对象的函数 public static void save(Context context, Map obj, String nazwa) { FileOutputStream str = null; ObjectOutpu

我在找一个地方,序列化后对象在哪里?我想把序列化对象(在另一个应用程序中创建)放到我的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");

它永远不起作用


我该怎么做?

您将它们作为应用程序专用文件(Context.MODE\u private)存储到只有应用程序可以访问的文件夹中,因此其他应用程序将无法访问它们

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

Environment.getExternalStorageDir();

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

好的,但我想在我的桌面应用程序中创建这些对象,然后只将它们复制到我的android应用程序中。我知道我可以创建对象并将它们保存在sd卡上,但我想在我的应用程序中创建文件夹将对象放在那里(安装前),并在安装时将此文件夹移动到sd卡,然后在游戏中使用。我在这里找到了解决方案
Environment.getExternalStorageDir();