从应用程序中包含的文件加载 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 数组的主要内容,如果未能解决你的问题,请参考以下文章
如何重新加载 UIViewController 中包含的 tableView?