2012-04-23 42 views
1

在我的Android应用程序中,我加载了一个文件和一个包含一堆文件的文件夹。我试图确定这些应该作为资源添加,还是作为资源或其他东西完全添加。Android:将外部文件和文件夹存储为资产?资源?还有别的吗?

该文件是一个XML文件,其路径被传递给一个类构造函数,该类构造函数根据文件中包含的内容创建一个对象。如果需要,我可以访问构造函数代码。

该文件夹包含一堆特殊格式的非人类可读文件。文件夹的路径传递给另一个知道文件夹结构的构造函数,并创建一个对象。我无法访问其代码。

噢,这两者没有任何关系,除了它们是由同一个应用程序所需要的事实。

那么我应该如何存储这些?我首先想到了将它们添加为资产,但显然我只能得到一个不起作用的资产的输入流。如果我将该文件夹添加为资源,是否必须进入res /下的特定子文件夹?哪一个? te XML文件是否必须放在res/xml下?无论是资产还是资源,是否都有我用来访问文件和文件夹的默认根路径?

Thx!

+0

这些文件是否需要随时间改变,或者如果它们随您的源代码一起提供且永不改变,那么这些文件是否可以更改? – wsanville 2012-04-23 18:48:57

+0

我会说文件夹中的文件非常静态。也就是说,他们可能会更新,但可能与代码本身一样多(bug修复等)。 XML文件不是静态的。它包含一个排序列表,用户可以选择使用应用程序向列表中添加更多项目。 – 2012-04-23 19:01:56

+0

资产和资源不能在运行时更改,因此请考虑这一点。 – wsanville 2012-04-23 19:39:07

回答

2

为了性能方面的原因,我会将该XML文件放在res/xml/之下。 res/xml/支持任意XML,所有XML编码资源的解析速度比解析普通文件快10倍。您的“从文件中包含的内容创建对象的类构造函数”将使用从该对象的Resources对象获得的XmlResourceParser

就文件夹而言,请使用assets/,因为您无法在资源(原始或其他)中使用文件夹结构。

我首先想到其添加为资产,但显然我只能得到一个资产,是行不通的输入流。

如果您希望将文件打包到应用程序中并直接使用它们,您并没有真正的选择。资源和资产都不能直接作为文件提供。将内容作为文件获取的唯一方法是,您可以使用流将它们复制到本地文件中,这样可以增加它们占用的存储量,而对于XML,则会降低解析性能。