好的,我知道这应该很简单,但我想我并没有正确地在我的Google& stackoverflow搜索。
我需要在安装时加载到我的数据库中的大量静态数据(6兆)。现在我在第一次运行时从我的Web服务器获取一个json数据文件并填充我的数据库,但这可能很慢而且可能出错。我更愿意只在清单中包含数据文件,然后在安装或首次运行时加载它。
那么,我在哪里放置文件,使其最终在目标设备上,然后打开它?
我已经尝试将它放在/ res / files /然后执行:
InputStream inputStream = new FileInputStream(“/ res / files / foo.json”);
但是,如果有效的话,我当然会感到震惊。虽然我正在使用它,但我应该使用CSV格式,因为这会减小尺寸,但这是另一个故事,我似乎没有办法解析它,但我知道如何解析JSON数据。对不起,我有点新鲜。谢谢!
答案 0 :(得分:1)
您可以将其存储在assets
或res\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