zoukankan      html  css  js  c++  java
  • android 数据库 备份还原

    详情参考  某android平板项目开发笔记---计划任务备份

    新建一个类继承 AsyncTask

    public class BackupTask extends AsyncTask<String, Void, Integer> {
        private static final String COMMAND_BACKUP = "backupDatabase";
        public static final String COMMAND_RESTORE = "restroeDatabase";
        private Context mContext;
    
        public BackupTask(Context context) {
            this.mContext = context;
        }
    
        @Override
        protected Integer doInBackground(String... params) {
            // TODO Auto-generated method stub
    // 获得正在使用的数据库路径,我的是 sdcard 目录下的 /dlion/db_dlion.db
         // 默认路径是 /data/data/(包名)/databases/*.db
    File dbFile = mContext.getDatabasePath(Environment .getExternalStorageDirectory().getAbsolutePath() + "/dlion/db_dlion.db"); File exportDir = new File(Environment.getExternalStorageDirectory(), "dlionBackup"); if (!exportDir.exists()) { exportDir.mkdirs(); } File backup = new File(exportDir, dbFile.getName()); String command = params[0]; if (command.equals(COMMAND_BACKUP)) { try { backup.createNewFile(); fileCopy(dbFile, backup); return Log.d("backup", "ok"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("backup", "fail"); } } else if (command.equals(COMMAND_RESTORE)) { try { fileCopy(backup, dbFile); return Log.d("restore", "success"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return Log.d("restore", "fail"); } } else { return null; } } private void fileCopy(File dbFile, File backup) throws IOException { // TODO Auto-generated method stub FileChannel inChannel = new FileInputStream(dbFile).getChannel(); FileChannel outChannel = new FileOutputStream(backup).getChannel(); try { inChannel.transferTo(0, inChannel.size(), outChannel); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (inChannel != null) { inChannel.close(); } if (outChannel != null) { outChannel.close(); } } } }

    在 mainActivity 里异步加载备份、还原:

      // 数据恢复
        private void dataRecover() {
            // TODO Auto-generated method stub
            new BackupTask(this).execute("restroeDatabase");
        }
    
        // 数据备份
        private void dataBackup() {
            // TODO Auto-generated method stub
            new BackupTask(this).execute("backupDatabase");
        }
  • 相关阅读:
    初探element+vue+vue-router
    git命令移动文件夹到另一文件夹
    javascript最大公约数与最小公倍数
    求1-100数字的和
    [摘录]代码优化规则
    基于.NET平台常用的框架和开源程序整理
    软件架构师的12项修炼
    Service Oriented Architecture and WCF 【转】
    电商网站的初期技术选型【转】
    论SOA架构的几种主要开发方式【转】
  • 原文地址:https://www.cnblogs.com/oldfeel/p/2466121.html
Copyright © 2011-2022 走看看