有一个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卡路径就行了。 这个错误遇到过,是因为文件路径错误,断点调试下吧