通过迁移工具放进HarmonyOS应用里的db文件,这里如何填路径

通过迁移工具放进HarmonyOS应用里的db文件,这里如何填路径。


HarmonyOS
2024-09-09 10:15:08
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

请尝试下如下方案:

/** 
 * 移动文件 
 * 将文件从备份恢复的原始路径移动到应用的沙箱路径中指定的目录 
 * 默认是CE分区,对应el2 
 * 如果需要修改分区,则需要单独指定 
 * 如:指定DE分区,对应el1 
 * context.area = contextConstant.AreaMode.EL1; 
 * 
 * @param context context上下文 
 * @return 成功返回true, 否则false 
 */ 
private moveFiles(context: common.Context): boolean { 
  try { 
    // ce路径前缀,数据迁移时会将双框架/data/data/${双包名}下的数据迁移至此处 
    let cePathPrefix: string = '/data/storage/el2/backup/restore/com.hmos.demo/ce'; 
    // 需要移动的源文件路径,根据实际路径来指定,如这里移动files/sourceFiles下面的所有文件 
    let sourceFilePath: string = cePathPrefix + '/files/sourceFiles'; 
    if (!fs.accessSync(sourceFilePath)) { 
      LogUtils.error(TAG, `moveFiles, ${sourceFilePath} can't access`); 
      return false; 
    } 
    // 得到源路径下面所有的文件和目录 
    let listFileNames: string[] = fs.listFileSync(sourceFilePath); 
    if (!listFileNames || listFileNames.length === 0) { 
      LogUtils.error(TAG, `moveFiles, ${sourceFilePath} is not file`); 
      return false; 
    } 
    // 目标路径根据实际情况来指定, 如这里是沙箱路径files下面的targetFiles目录 
    let targetPath: string = context.filesDir + '/targetFiles'; 
    // 目标目录不存在,则需要创建 
    if (!fs.accessSync(targetPath)) { 
      fs.mkdirSync(targetPath); 
    } 
    // 遍历源路径下面的文件或目录,进行移动 
    listFileNames.forEach((fileName: string) => { 
      let srcPath: string = `${sourceFilePath}/${fileName}`; 
      let destPath: string = `${targetPath}/${fileName}`; 
      if (fs.statSync(srcPath).isFile()) { 
        fs.moveFileSync(srcPath, destPath); 
      } else { 
        fs.moveDirSync(srcPath, targetPath); 
      } 
    }); 
    return true; 
  } catch (error) { 
    LogUtils.error(TAG, `moveFiles, error: ${JSON.stringify(error)}`); 
    return false; 
  } 
}
分享
微博
QQ
微信
回复
2024-09-09 16:02:38
相关问题
如何获取应用自身文件路径
2116浏览 • 1回复 待解决
dbf to mysql 数据迁移工具
2238浏览 • 1回复 待解决
鸿蒙如何通过代码解压zip文件
159浏览 • 0回复 待解决
HarmonyOS db文件无法读取到数据
619浏览 • 1回复 待解决
文件上传本地路径如何获取
444浏览 • 1回复 待解决