是否可以在安装时将文件放入android文件系统?

时间:2011-09-19 09:03:15

标签: android file-io

我对android很新。我想创建一个安装包,将文件放在android文件系统的app文件夹(/data/data/my.app / ...)中。

我想这样做,所以我可以使用标准的java File方法访问文件(为了重用我自己的代码),而不必使用android资源访问方法。

我认为可以在这个方向上实现某些目标的唯一方法是将文件放在/ res文件夹中,并在运行时将它们复制到文件系统(例如,在第一次运行时)。这样做的缺点是无缘无故地拥有每个文件的两个副本。

另一种方法是让我的应用程序从服务器下载这些文件(在另一个答案中也看到了这个选项)。这是可能的,但我希望避免为这么简单的任务设置文件服务器......

根据我的理解,DDMS在这里没有帮助,因为它只允许我在安装应用程序后手动访问该文件夹。

我的问题是:是否有不同的方法来实现我的原始目标(使用标准java方法访问文件)?如果没有,是否有更简洁的方法将文件放在文件系统上?

谢谢!

2 个答案:

答案 0 :(得分:1)

我可以想到3种避免重复的方法:

  1. 正如您提到的那样使用res / raw文件夹。如果您使用的现有代码可以使用InputStream代替File并使用Resources.openRawResource(),则可以避免重复。
  2. 使用assets文件夹并使用AssetManager.openNotAssetFd()使用文件访问该文件。同样,这将需要使用Streams而不是File类。如果您的文件被压缩,因为资产是内存映射的,这可能会有点麻烦。
  3. 如果你的代码真的与File绑定(不只是用它来打开InputStream)。为避免重复,您可以在第一次运行时从Web下载该文件并将其存储到外部存储中。

答案 1 :(得分:1)

您可以将文件放在/ res / raw下,然后使用:

Resources res = context.getResources();
InputStream in_s = res.openRawResource(R.raw.myfile);

或者如果你想要File对象

File f = new File(context.getResources().openRawResource(R.raw.myfile));

然后,您可以使用普通的Java apis来处理文件。