有一个10m多大小的sqlite文件,要在android应用中使用它。
尝试过的方法如下:
1、把sqlite文件放入raw目录下,通过文件读写操作,将sqlite文件存入到sd卡中。这时候会出现错误:android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed。程序并没有读完全部的数据库内容就退出了。我这里的sd卡容量肯定能存放的下,文件读写部分的代码在下面:
// 首先在项目的包路径下创建一个存放数据文件的目录 File dbDir = new File(dbPath); if (!dbDir.exists()) { dbDir.mkdir(); } // 将已经存在的数据文件从raw下读入到应用中 InputStream dbStream = context.getResources().openRawResource( R.raw.media); FileOutputStream fos = null; // File dbFile = new File(dbPath + dbName); try { if (!dbFile.exists()) { dbFile.createNewFile(); } if (dbStream != null) { Log.i("simaben", "dbFile's path is -->" + dbFile.getAbsolutePath()); fos = new FileOutputStream(dbFile); byte[] buffer = new byte[1024]; int count = 0; int tmp = dbStream.read(buffer); while ((count = dbStream.read(buffer)) != -1) { fos.write(buffer, 0, count); } fos.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (dbStream != null) { try { dbStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
2、如果把sqlite文件放入到assents目录下,启动会报错:android.database.sqlite.SQLiteException: unable to open database file
请教一下现在应该怎么解决这个问题?谢谢大家了。
你可以把默认的db文件先放到assets目录下,应用首次启动时复制到SD卡的指定目录,然后将Android源码SQLiteOpenHelper.java拷贝出来自己修改数据库引用的路径为指定的SD卡路径就行了。 这个错误遇到过,是因为文件路径错误,断点调试下吧
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。