【问题标题】:How to use the Android file system correctly?如何正确使用Android文件系统?
【发布时间】:2012-01-23 13:21:08
【问题描述】:

我正在启动一个示例 Android 应用程序,我需要做的事情之一是在安装时与应用程序一起存储两个文件。在运行时,应用应该能够读取和写入这些文件。

这似乎不是一项艰巨的任务,但我已经阅读了各种说明(包括 developer.android.com、O'Reilly Learning Android 和此处的一些类似问题),但从未得到最终答案的线索我的问题。

这些文件足够小(100kb),可以与 .apk 文件一起安装,据我所知,该文件会存储在 data/data/packagename 中。为了在安装过程中将文件放在那里,我发现的简单解决方案是将文件添加到我的 Eclipse 项目中的 res/raw 文件夹中。我这样做了,但在使用模拟器和 DDMS 测试应用程序时找不到文件。

我确定我错过了重要的教程或信息,如果有,请直接敲打我的脸。否则,如果您能提供任何帮助,我将不胜感激。

【问题讨论】:

    标签: android file-io storage


    【解决方案1】:

    将您的预构建文件放在应用程序的/asset 目录中。

    并在应用程序第一次运行时将这些文件复制到/data/data/<application_package>/files 目录,

    现在从内部存储位置对这些文件执行 writeread 操作。

    注意: 确保不允许对 /asset/res/raw 目录中的文件进行写操作(因为它们是只读文件系统)。

    另外,如果您的文件位于/res/raw 目录中,

    您可以使用输入流获取这些文件,例如,

    InputStream ins = getResources().openRawResource(R.raw.file);
    

    【讨论】:

    • 我显然还没有充分利用 R。感谢您的提示。
    【解决方案2】:

    试试this tutorial。它展示了如何从存储在raw 文件夹中的任何文件中获取InputStream

    【讨论】:

    • 教程帮助很大,谢谢。尤其是到目前为止我遇到的任何资源都没有解释 res/raw 和 assets 之间的区别。
    【解决方案3】:

    有关读取原始资源的示例,请参阅Resources.openRawResource() issue Android。 openRawResource 为您提供了一个 InputStream 来读取您的数据。

    【讨论】:

      猜你喜欢
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多