android导入外部已存在的数据库
来源:互联网 发布:php 大数据处理高并发 编辑:程序博客网 时间:2024/05/22 12:46
转载自 android 如何实现附加现有数据库?而不是每次安装的时候都创建
首先用文件分割器把数据库分割为小于1M的文件,并拷贝到raw下,然后就是在程序里把文件拷贝到sdcard卡上,并把分割后的文件合并成数据库文件。代码如下:
Java codeprivate Context context; private String rootDirectory = "/data/data/CrazyNovelV1_0.com/data/"; private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/crazynovel"; private final String DATABASE_FILENAME = "crazynovel.db";//复制小于1M的数据库程序 public SQLiteDatabase openDatabase() { try { // 获得dictionary.db文件的绝对路径 String databaseFilename = DATABASE_PATH+ "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/dictionary目录不中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/dictionary目录中不存在 // dictionary.db文件,则从res\raw目录中复制这个文件到 // SD卡的目录(/sdcard/dictionary) if (!(new File(databaseFilename)).exists()) { //复制文件 copydb(R.raw.crazynovel1,DATABASE_PATH+ "/crazynovel1",944128); copydb(R.raw.crazynovel2,DATABASE_PATH+ "/crazynovel2",944128); copydb(R.raw.crazynovel3,DATABASE_PATH+ "/crazynovel3",944128); copydb(R.raw.crazynovel4,DATABASE_PATH+ "/crazynovel4",944128); copydb(R.raw.crazynovel5,DATABASE_PATH+ "/crazynovel5",944128); copydb(R.raw.crazynovel6,DATABASE_PATH+ "/crazynovel6",944128); copydb(R.raw.crazynovel7,DATABASE_PATH+ "/crazynovel7",944128); copydb(R.raw.crazynovel8,DATABASE_PATH+ "/crazynovel8",944128); copydb(R.raw.crazynovel9,DATABASE_PATH+ "/crazynovel9",944128); copydb(R.raw.crazynovel10,DATABASE_PATH+ "/crazynovel10",944128); copydb(R.raw.crazynovel11,DATABASE_PATH+ "/crazynovel11",944128); copydb(R.raw.crazynovel12,DATABASE_PATH+ "/crazynovel12",669696); //合并文件 File[] files = new File[12]; files[0] = new File(DATABASE_PATH+ "/crazynovel1"); files[1] = new File(DATABASE_PATH+ "/crazynovel2"); files[2] = new File(DATABASE_PATH+ "/crazynovel3"); files[3] = new File(DATABASE_PATH+ "/crazynovel4"); files[4] = new File(DATABASE_PATH+ "/crazynovel5"); files[5] = new File(DATABASE_PATH+ "/crazynovel6"); files[6] = new File(DATABASE_PATH+ "/crazynovel7"); files[7] = new File(DATABASE_PATH+ "/crazynovel8"); files[8] = new File(DATABASE_PATH+ "/crazynovel9"); files[9] = new File(DATABASE_PATH+ "/crazynovel10"); files[10] = new File(DATABASE_PATH+ "/crazynovel11"); files[11] = new File(DATABASE_PATH+ "/crazynovel12"); FileOutputStream fos = new FileOutputStream(databaseFilename); CreateFromRawDbFiles(files,fos); } catch (Exception e) { } } //复制文件 private void copydb(int dbint,String databaseFilename,int FileSize) { try { // 获得封装dictionary.db文件的InputStream对象 InputStream is = context.getResources().openRawResource(dbint); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = new byte[FileSize]; int count = 0; // 开始复制dictionary.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } catch(Exception e) {} } //合并并拷贝数据 private void CreateFromRawDbFiles(File[] filelist,FileOutputStream Fos) { try { for (File file : filelist) { InputStream inputFile = new FileInputStream(file); int TotalLength = 0; try { TotalLength = inputFile.available(); } catch (IOException e) { } // Reading and writing the file Method 1 : byte[] buffer = new byte[TotalLength]; int len = 0; try { len = inputFile.read(buffer); } catch (IOException e) { } Fos.write(buffer,0,len); inputFile.close(); } Fos.close(); } catch(IOException e) {} }
附上:
android导入外部已存在的数据库大于1M的数据库文件方法
地址:http://mobile.51cto.com/abased-337051.htm
- android导入外部已存在的数据库
- android导入外部已存在的数据库大于1M的数据库文件方法
- android导入外部已存在的数据库大于1M的数据库文件方法
- android导入外部已存在的数据库大于1M的数据库文件方法
- android导入外部已存在的数据库大于1M的数据库文件方法
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- Android 如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- android 导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- Android如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- 编码混乱是技术上的债务吗?
- mysql server_id 的查看
- Web加载Spring的过程
- PKU POJ 1017 Packets 产品包装问题
- 索引
- android导入外部已存在的数据库
- 大家来放炮
- stopPropagation, preventDefault 和 return false 的区别
- vs2008调试程序常见问题
- linux top命令详解
- mysql log-slow-queries 添加慢查询 方法
- ubuntu常用软件大全
- 乖宝贝的伤感QQ日志推荐:泪流了,哭累了,最终剩悲伤
- Opengl 绘制管线