拷贝数据库文件

开发中常会遇到一个问题,需要得到本地数据库里保存的数据。但一般数据库文件在手机上是无法直接访问到的,除非手机越狱了,那如果手机没有越狱呢,怎么得到该数据?
有一个很方便的方法,可以将数据库文件拷贝到SD卡里,就可以访问了,详细代码如下:

// savePath  拷贝的数据库文件存放的路径
// databaseName 需要拷贝的数据库名称

 public static void copyDataBaseToSD(String savePath,String databaseName){

        File rootFile = new File(savePath + "/");
        if (!rootFile.exists()) {
            rootFile.getParentFile().mkdirs();
        }
        String saveDir = savePath + "/";
        File dir = new File(saveDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        makeRootDir(saveDir);

     //获得数据库文件
     File dbFile = new File(AppContext.getInstance().getDatabasePath(databaseName)+".db");
     File file  = new File(savePath, databaseName+".db");
     FileChannel inChannel = null,outChannel = null;

    try {
          file.createNewFile();
          inChannel = new FileInputStream(dbFile).getChannel();
          outChannel = new FileOutputStream(file).getChannel();
          inChannel.transferTo(0, inChannel.size(), outChannel);
      } catch (Exception e) {
          Log.e(TAG, "copy dataBase to SD error.");
          e.printStackTrace();
      }finally{
          try {
              if (inChannel != null) {
                  inChannel.close();
                  inChannel = null;
              }
              if(outChannel != null){
                  outChannel.close();
                  outChannel = null;
              }
          } catch (IOException e) {
              Log.e(TAG, "file close error.");
              e.printStackTrace();
          }
      }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值