存储文件作为Android清单的一部分进行部署然后打开它?

时间:2014-08-01 06:49:54

标签: java android json android-manifest

好的,我知道这应该很简单,但我想我并没有正确地在我的Google& stackoverflow搜索。

我需要在安装时加载到我的数据库中的大量静态数据(6兆)。现在我在第一次运行时从我的Web服务器获取一个json数据文件并填充我的数据库,但这可能很慢而且可能出错。我更愿意只在清单中包含数据文件,然后在安装或首次运行时加载它。

那么,我在哪里放置文件,使其最终在目标设备上,然后打开它?

我已经尝试将它放在/ res / files /然后执行:

InputStream inputStream = new FileInputStream(“/ res / files / foo.json”);

但是,如果有效的话,我当然会感到震惊。

虽然我正在使用它,但我应该使用CSV格式,因为这会减小尺寸,但这是另一个故事,我似乎没有办法解析它,但我知道如何解析JSON数据。对不起,我有点新鲜。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以将其存储在assetsres\raw

如何从assets文件夹中打开它:

InputStream is = getAssets().open("foo.json");

如何从res\raw文件夹中打开它:

getResources().openRawResource(R.raw.foo);

答案 1 :(得分:0)

您可以将JSON文件放在原始文件夹(res/raw)中并使用以下代码加载它:

InputStream inputStream = getResources().openRawResource(R.raw.foo);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}
inputStream.close();
JSONArray jArray = new JSONArray(sb.toString());

然后,您可以使用您的知识来解析JSONArray

答案 2 :(得分:0)

我建议你使用SQLite和/或XML。 @Gabriel建议最有可能正常工作,但加载和处理6MB可能需要一些时间 - 根据我的经验,时间窗口为1到5秒。自从您从网络服务器下载后,我相信您的数据具有某种形式的结构,并且在您的应用中,您不会同时需要所有数据。

以下是关于android中SQLite的一些指南/教程,请记住,XML也是可行的,在这种情况下,有些人可能会提倡XML而不是SQLite。

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html http://www.vogella.com/tutorials/AndroidSQLite/article.html