1

我正在尝试创建一个使用文本文件(保存将解析为枚举的值)的应用程序来构建应用程序显示的可视界面。这个问题有点复杂,所以我认为最好只是解释结果:

我想要做的是一次读取文件 2 个字符(应该是数字),然后将其连接到字符串 [str] (带有控制字符),以便我可以将该字符串添加到 R.drawable [R .drawable.str] 返回并显示正确的图像。

更具体地说,是制作一个字符串给 R.drawable 甚至可以解决我想要的方式,还是我必须围绕它跳舞?

在我的应用程序开发生命周期的某个时刻,我将实现生成这些文件以及在 divice 中使用的能力。那么是否可以确保用户无法访问它们但它们仍然可以作为文本文件的形式存在?

为了从“已知目录”中系统上的文件中读取,我需要什么特定的东西吗?

我可以在编写文本文件时使用 carrage-return-line-feed 吗?我是否需要做任何超出控制代码 \n 的操作来管理它,因为强制返回会使它更具可读性,并且可以添加另一个级别的错误检查以防止修改和系统读取错误(应该发生)?

4

1 回答 1

1

对于您想要为应用程序提供一些文本文件的场景,您可以将它们包含在项目的 /res/assets 目录中,然后可能在“首次运行”时将它们复制到手机内存中应用程序的 /files 目录中。

/files 目录也是存储用户创建的任何文件的好地方,如果您不希望他们直接访问文件本身(只有当用户对手机具有 root 访问权限时才能访问内部存储器)。

至于连接用于访问资源的文本字符串,这将不起作用,因为所有 R.foo.bar 标识符实际上都是整数 id 的文本“键”。换句话说,例如,R.drawable.my_icon 在编译器环境中仅作为“字符串”存在,并在构建时转换为整数。

您可能会考虑为可绘制对象提供诸如 image_01、image_02 之类的名称并将它们放在您的资产目录中 - 然后您可以通过文件名而不是资源标识符来引用它们/访问它们。

编辑:有关将文件从资产目录复制到手机 sdcard 的示例,请参阅此问题的答案... Android:如何将“资产”中的文件复制到 sdcard?

要复制到内部 /files 目录,您将替换此行...

out = new FileOutputStream("/sdcard/" + files[i]);

...与...类似的东西

out = Context.openFileOutput(files[i], MODE_PRIVATE);

openFileOutput(...)自动创建一个可以写入应用程序的 /files 目录的文件。同样,在以后,您可以使用openFileInput(...)从 /files 目录中读取。

于 2011-04-10T21:37:03.963 回答