当前位置: 首页 > news >正文

阿里云 企业 网站互联网建设网站

阿里云 企业 网站,互联网建设网站,wordpress站点地址写错,做一个网站开发项目有哪些阶段【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下 一、问题背景 应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将…

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下

一、问题背景

应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将资源文件夹Resource-RawFile下的文件存放到沙箱目录下。

二、鸿蒙资源文件和沙箱的概念

在鸿蒙中,应用仅能保存文件到“应用文件目录”下,根据目录的使用规范和注意事项来选择将数据保存到不同的子目录中。

这样的设定与安卓和苹果目前一致。应用沙箱的概念,可以保证数据访问的安全性。

在鸿蒙系统中,文件存储分为不同的域,如应用内部存储(应用私有目录)和外部存储(公共目录等)。应用内部存储是应用私有的,其他应用通常无法访问。外部存储可以在用户授权的情况下被多个应用访问。
在这里插入图片描述
注意:

不要使用绝对路径拼接系统文件路径,否则可能导致后续应用版本因应用文件路径变化导致不兼容问题。应该是用context去动态获取。

而rawfile是一种资源文件类型,通常在应用开发过程中作为原始文件被打包进应用的资源目录。它在 APK(安卓应用安装包)或者鸿蒙应用安装包(HAP)中是只读的。

三、解决方案思路

在这里插入图片描述

1.首先我们需要通过getRawFileContentSync读取rawfile下目标文件的内容val

      let val: Uint8Array = context.resourceManager.getRawFileContentSync("test.zip");

2.之后创建本地沙箱的文件对象fileTarget

  let pathDir: string = context.filesDir; // /data/storage/el2/base/haps/entry/filesconsole.info(this.TAG, "pathDir: " + pathDir);// 待拷贝文件沙箱路径let filePath: string = pathDir + '/test.zip';console.info(this.TAG, "filePath: " + filePath);// 若文件不存在,则创建文件。let fileTarget = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

3.将val目标文件内容写入文件对象即可

      let writeLen = fs.writeSync(fileTarget.fd, val.buffer as ArrayBuffer);

最后记得关闭fs

 fs.closeSync(fileTarget);

完整源码

import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo as fs } from '@kit.CoreFileKit';

struct SandboxPage {private TAG: string = "SandboxPage";onCopyRawFileToLocal = ()=>{let context = getContext(this) as common.UIAbilityContext; // 获取设备A的UIAbilityContext信息try {let val: Uint8Array = context.resourceManager.getRawFileContentSync("test.zip");console.info(this.TAG, "getRawFileContentSync done");let pathDir: string = context.filesDir; // /data/storage/el2/base/haps/entry/filesconsole.info(this.TAG, "pathDir: " + pathDir);// 待拷贝文件沙箱路径let filePath: string = pathDir + '/test.zip';console.info(this.TAG, "filePath: " + filePath);// 若文件不存在,则创建文件。let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);console.info(this.TAG, "file done");let writeLen = fs.writeSync(file.fd, val.buffer as ArrayBuffer);console.info(this.TAG, "write data to file succeed and size is:" + writeLen);fs.closeSync(file);} catch (error) {let code = (error as BusinessError).code;let message = (error as BusinessError).message;console.error(this.TAG,`getRawFileContentSync failed, error code: ${code}, message: ${message}.`);}}build() {RelativeContainer() {Text("点击拷贝zip到本地沙箱下").id('SandboxPageHelloWorld').fontSize(50).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }}).onClick(this.onCopyRawFileToLocal)}.height('100%').width('100%')}
}

验证zip拷贝成功:
1. IDE右下角找到 Device File Browser
在这里插入图片描述
2.根据你的app包名,找到zip的位置
在这里插入图片描述

http://www.15wanjia.com/news/188438.html

相关文章:

  • 松岗网站建设网络合同怎么签有效
  • 哈尔滨网站建设1元钱网页制作费用预算
  • 企业php 网站系统网站站点规划实例
  • 教育网站 怎么做吸引人网站备案的公司注销了
  • 怎么制作网站搜索窗口山东英文网站建站
  • 苏州企业建设网站公司vultr安装WordPress目录
  • 哪个网站做黄金交易最好做网站走啥科目
  • 卢沟桥网站建设网站建设公司968
  • 网站安全检测软件做网站用什么插件
  • 建网站是自己做还是用CMS国内最有趣的25个网站
  • 做网站要搭建什么平台WordPress模仿教程
  • 海淀网站建设龙岩棋牌软件开发搭建
  • 怎么自己做投票网站湖南网站建设推广
  • 营销型网站 平台桂林北站到象鼻山多远
  • 绿色门业宽屏网站模板 破解wordpress .htaccess 在哪里
  • 网站流量统计系统企业版工程建设内容包括哪些
  • 烟台高端网站建设公司wordpress胖子马
  • 免费下载网站模版网站再就业技能培训班
  • 上海市做网站公司自己做的网站为何手机不能浏览
  • 网站建设用啥系统好自己做电影网站可以赚钱吗
  • 以应用为导向的高职高专数学课程改革与建设 教学成果奖申报网站苏州手机网站seo
  • 网站开发工具的选择遵义网红打卡
  • 重庆有哪些做网站公司好网站建设服务优势
  • 网站建设框架程序个人工商户做网站要上税吗
  • 做网站需要审核资质吗哪个网站做五金冲压的
  • html5 视频网站 模板广州app定制开发公司
  • 有字体设计网站扶风网站开发
  • wordpress网站用户注册张掖北京网站建设
  • php做网站步骤哪个网站可以帮人做ppt
  • 如何建立的网站能争钱不知名网站开发