android文件io

android文件io,android,file-io,r.java-file,Android,File Io,R.java File,我正在尝试创建一个应用程序,它使用一个文本文件(保存将解析为枚举的值)构建一个可视化界面,以便应用程序显示。这个问题有点复杂,所以我认为最好只是解释一下结果: 我想做的是一次读取文件2个字符(应该是数字),然后将其合并为字符串[str](带有控制字符),这样我就可以将该字符串固定到R.drawable[R.drawable.str]中,以返回并显示正确的图像 更具体地说,是制作一个字符串给R.drawable,甚至可以解决我想要的问题,还是我必须绕着它跳舞 在我的应用程序开发生命周期中的某个时刻

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

我想做的是一次读取文件2个字符(应该是数字),然后将其合并为字符串[str](带有控制字符),这样我就可以将该字符串固定到R.drawable[R.drawable.str]中,以返回并显示正确的图像

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

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

为了从系统上“已知目录”中的文件读取,是否需要任何特定的内容


我是否可以在编辑文本文件时使用carrage返回换行符?我是否需要执行控制代码以外的任何操作来管理它,因为强制返回将使其更具可读性,并且可以添加另一级别的错误检查以防止修改和系统读取错误(如果发生)?

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

如果您不想让用户直接访问文件本身,/files目录也是存储用户创建的任何文件的好地方(只有在用户拥有手机的root访问权限时,才能访问内部内存)

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

您可以考虑提供具有IMAGEY01、IMAGEY02等名称的可绘制文件,并将它们放入您的资产目录中,然后可以使用文件名而不是资源标识符来引用它们/访问它们。 编辑:有关将文件从资产目录复制到手机SD卡的示例,请参阅此问题的答案

要复制到internal/files目录,您需要替换此行

out = new FileOutputStream("/sdcard/" + files[i]);
…有点像

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

openFileOutput(…)
自动创建一个文件,该文件可以写入应用程序的/files目录中。类似地,以后,您可以使用
openFileInput(…)
读取/files目录。

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

如果您不想让用户直接访问文件本身,/files目录也是存储用户创建的任何文件的好地方(只有在用户拥有手机的root访问权限时,才能访问内部内存)

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

您可以考虑提供具有IMAGEY01、IMAGEY02等名称的可绘制文件,并将它们放入您的资产目录中,然后可以使用文件名而不是资源标识符来引用它们/访问它们。 编辑:有关将文件从资产目录复制到手机SD卡的示例,请参阅此问题的答案

要复制到internal/files目录,您需要替换此行

out = new FileOutputStream("/sdcard/" + files[i]);
…有点像

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

openFileOutput(…)
自动创建一个文件,该文件可以写入应用程序的/files目录中。类似地,以后,您可以使用
openFileInput(…)
读取/files目录。

是否有任何方法可以让我看到一些关于这个的教程、博客文章、开发说明(如果有),但我不知道实际如何做。我只是想到了这一点,想要一些输入。我的理解是,资产目录中的任何内容都有更高的开销,因为它可能存在于drawable使用的singleton框架之外,所以我不能在drawable中维护图像(大约60个左右),然后在读取文件的for循环中使用case开关来构造视图。@gardian06:使用开关对资源ID很有效-您可以在编译时使用R.foo.bar格式指定case,并在运行时解析它们。这取决于你想要达到的目标,这可能意味着它在某些情况下比其他情况下工作得更好。有没有什么方法可以让我看到一些教程、博客帖子、开发说明,如果有的话,这是有意义的,但我不知道如何真正做到。我只是想到了这一点,想要一些输入。我的理解是,资产目录中的任何内容都有更高的开销,因为它可能存在于drawable使用的singleton框架之外,所以我不能在drawable中维护图像(大约60个左右),然后在读取文件的for循环中使用case开关来构造视图。@gardian06:使用开关对资源ID很有效-您可以在编译时使用R.foo.bar格式指定case,并在运行时解析它们。这确实取决于你想要实现什么,这可能意味着它在某些情况下比其他情况下更有效。