• 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");
        }
  • 相关阅读:
    利用python 传输文件
    SVN 操作报错 “Previous operation has not finished; run 'cleanup' if it was interrupted“
    Java IP白名单相关工具类
    Truncated class file 问题的解决
    Linux 文件压缩与解压相关
    MyEclipse 根据左括号或右括号查找另外一半
    100个常用的linux命令(转)
    Java 编码规范(转)
    MyEclipse 远程调试Tomcat
    Extjs header column 自定义排序规则
  • 原文地址:https://www.cnblogs.com/oldfeel/p/2466121.html
Copyright © 2020-2023  润新知