从应用程序中包含的文件加载 android 数组

Posted

技术标签:

【中文标题】从应用程序中包含的文件加载 android 数组【英文标题】:Loading android array from a file included in app 【发布时间】:2012-11-22 13:51:44 【问题描述】:

我一直在搜索,但不知道如何执行此操作。 我正在创建一个基于块的游戏,比如说屏幕上的 3x3 块,每个块都有一个 int 关联以知道它是哪种类型:

int[][] blocksArray = 
     0, 0, 0 
     0, 0, 1 
     0, 0, 0 
;

我基本上想要做的是将像这样的 50 个多维数组保存到一个文件中,比如说“levels.txt”,就像这样:

int[][] level1 = 
     0, 0, 0 
     0, 0, 1 
     0, 0, 0 
;
...
int[][] level50 = 
     0, 0, 0 
     0, 0, 0 
     0, 0, 0 
;

这是解决问题的好方法吗?有更好的方法吗?

我真的不想制作我的数组字符串并将它们保存到共享首选项中,因为我需要手动编辑很多级别数组并且我想要这种格式,或者可能是一种非常相似的方式做吗?

【问题讨论】:

快速而肮脏的版本是创建一个包含所有数组的对象,然后使用 ObjectOutputStream 并调用 writeObject(..) 传递该对象。 我在考虑这个问题,比如循环一个包含其他二维数组的 3 维 int 数组。正如你所说,这是快速而肮脏的方式,有更好的主意吗?谢谢! 【参考方案1】:

您可以使用 java.io.ObjectOutputStream(); 将数组保存在文件中

    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file"));
    oos.writeObject(level1);
    ...
    oos.writeObject(level50);

然后读回你的数组:

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file"));
    level1 = (int[]][])ois.readObject();
    ...
    level50 = (int[]][])ois.readObject();

如果真的是你想要的

【讨论】:

感谢您的回答!但是,我还有一个问题:如果我只是设置一个新类,比如说“levels.class”,其中包含所有数组,然后只添加对levels.arrayName的引用,那会是一种有效的方法吗?跨度> 据我了解,您的 Level 类将以某种方式保存所有级别数组。在这种情况下,它应该是 Level 实现了 java.io.Serializable 然后你只能调用 writeObject(level) 一次,writeObject 将分析 Level 并保存里面的所有内容。与 readObject 相同。 我的意思是直接加载变量;假设用户选择了第一层,mainBlocksArray = Levels.array1;例如。这会实用吗?有没有更好的方法?

以上是关于从应用程序中包含的文件加载 android 数组的主要内容,如果未能解决你的问题,请参考以下文章

加载 .RData 文件中包含的对象(如果它们尚不存在)

如何重新加载 UIViewController 中包含的 tableView?

从数组中包含的行索引中选择矩阵的列[重复]

在 Android 中查找路径中包含的点

C - 当我尝试将结构从数组复制到结构中包含的数组时出现问题

ARM NEON:从 NEON 寄存器(Q/D 寄存器)中包含的地址加载数据