鸿蒙开发实战-OpenHarmony沙箱文件

这篇具有很好参考价值的文章主要介绍了鸿蒙开发实战-OpenHarmony沙箱文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在openharmony文件管理模块中,按文件所有者分类分为应用文件和用户文件和系统文件。

1)沙箱文件。也叫做应用文件,包括应用安装文件、应用资源文件、应用缓存文件

二.文件详解

在使用时首先需要导入包 import fs from “@ohos.file.fs”;

在API9之前使用“@ohos.fileio”,API9之后废弃。

1.常用文件路径

沙箱文件的沙箱路径与物理路径对应关系

context属性名称 沙箱路径 物理路径
filesDir /data/storage/el2/base/haps/entry/files /data/app/el2/100/base//haps/entry/files
cacheDir /data/storage/el2/base/haps/entry/cache /data/app/el2/100/base//haps/entry/cache
distributedFilesDir(分布式文件) /data/storage/el2/distributedfiles /mnt/hmdfs/100/account/merge_view/data/
bundleCodeDir(应用文件) /data/storage/el1/bundle /data/app/el1/bundle/public/

2.常用文件操作

​ 对于文件的API分为同步和异步的API操作。若在主进程中进行了耗时的文件同步操作,(比如拷贝)会对主进程进行阻塞(一般超过6s就会发生阻塞),此时需要将同步操作改为异步操作或者是新建一个worker进行文件操作。

常用的对文件的操作有以下几个(以同步方法为例,异步方法可在官网查看:):

1)目录的创建和删除

let dirPath =this.context.filesDir + "/testDir";
fs.mkdirSync(dirPath);//创建目录
fs.rmdirSync(dirPath);

2)检查文件是否存在

通过检查文件是否存在再进行下一步操作,避免对文件的误操作

let filePath=this.context.filesDir + "/test.txt";
let res = fs.accessSync(filePath);
if(res){
  console.info("file exists");
} else {
  console.info("file not exists");
}

3)查看文件属性

文件属性主要有:文件名;文件大小;文件的权限。

let stat = fs.statSync(filePath);
console.info("get file info succeed, the stat of file is " + JSON.stringify(stat));

4)打开和关闭文件

通过打开文件可获得文件的fd,通过文件的fd可以对文件进行拷贝,读写和删除。fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE表示文件打开的模式以读写的模式打开,不存在则创建。

let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
console.info("file fd: " + file.fd);
fs.closeSync(file);

5)读写文件

​ 读文件通过一个ArrayBuffer数据类型的变量来存放数据。有时候需要对数据进行转换Unit8Array与ArrayBuffer相互转换。如果在数据传输的过程中出现了乱码的情况可以使用new util.TextEncoder().encodeInto(s)和new util.TextDecoder().decodeWithStream(unit8Array)进行编码和解码。readSync和readTextSync的区别主要在获取的文件内容为ArrayBuffer和string。注:有时候当含有很特殊的字符时。readTextSync()无法使用。

写文件可以是字符串也可以是ArrayBuffer,ArrayBuffer可以是Unit8Array的buffer。

读写文件时可配置读写文件的位置,长度及编码。编码目前只支持“utf-8”

//read
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE);
let buf = new ArrayBuffer(stat.size);
fs.readSync(file.fd, buf);
fs.closeSync(file);

//write
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let options={ offset: fs.statSync(filePath).size,length:length,encoding:"utf-8" }
let str: string = "hello, world"+"\n"+"hello,openharmony";
let writeLen = fs.writeSync(file.fd, str,options);
console.info("write data to file succeed and size is:" + writeLen);
fs.closeSync(file);

//readText
class Option {
  offset: number = 0;
  length: number = 0;
  encoding: string = 'utf-8';
}
let stat = fs.statSync(filePath);
let option = new Option();
option.offset = 1;
option.length = stat.size;
let str = fs.readTextSync(filePath, option);
console.info("readText succeed:" + str);

6)文件拷贝

在使用文件拷贝的时候,可以srcPath也可以使用fd,可对用户文件(媒体文件)进行使用。

let srcPath = pathDir + "/srcDir/test.txt";
let dstPath = pathDir + "/dstDir/test.txt";
fs.copyFileSync(srcPath, dstPath);

7)文件列表

在对文件夹下的列表进行遍历的时候可进行条件过滤。过滤条件可以是后缀,名称,大小和时间。

class ListFileOption {
  public recursion: boolean = false;
  public listNum: number = 0;
  public filter: Filter = {};
}
let option = new ListFileOption();
option.filter.suffix = [".png", ".jpg", ".jpeg"];
option.filter.displayName = ["*abc", "efg*"];
option.filter.fileSizeOver = 1024;
option.filter.lastModifiedAfter = new Date().getTime();
let filenames = fs.listFileSync(pathDir, option);
console.info("listFile succeed");
for (let i = 0; i < filenames.length; i++) {
  console.info("filename: %s", filenames[i]);
}

8)文件删除

fs.unlinkSync(filePath);

三.常用文件操作shell命令

在DevEcoStudio4.0之前是没有DeviceFileBrowser的,对于文件的shell命令也需要熟悉。

文件操作的常用shell命令:

创建文件夹:mkdir test

添加文件:touch file.txt

写入内容:echo abc>file.txt

查看内容:cat file.txt

查看文件的属性信息:ls -l file.txt

授权: chmod -R 777 [目录/文件]

删除文件:rm file.txt

删除文件夹:rm rR test

查看当前所在的目录:pwd

查找文件 :find -name 【/目录】 “文件名”

接收文件:hdc file recv “设备要导出的文件” “电脑存放文件目录”

推送文件:hdc file send “要推送的文件” “设备目录”

注意:有时候推送了文件进了设备,但是对文件操作报权限错误,需要对文件进行授权。

四.总结

对沙箱文件的操作总体来说较为简单,但要注意和用户文件的区分。

常用的对文件的操作场景有:1.文件上传下载,2.文件的遍历与读取,3.日志的保存。

还有许多文件操作的细节和扩展,希望能和大家一起学习,共同进步。

鸿蒙开发实战-OpenHarmony沙箱文件,鸿蒙开发,harmonyos,华为,鸿蒙开发,程序员,鸿蒙,OpenHarmony,鸿蒙系统文章来源地址https://www.toymoban.com/news/detail-805200.html

到了这里,关于鸿蒙开发实战-OpenHarmony沙箱文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:配置开发环境

    目录 下载OpenHarmony SDK及工具链 参考信息 配置DevEco Studio代理 配置NPM代理 在进行OpenHarmony应用/服务开发前,需要提前在DevEco Studio中下载对应版本的SDK。下载OpenHarmony SDK需要连接网络,一般情况下,可以直接下载;但部分用户的网络可能受限,此时需要先根据参考信息 配置相

    2024年02月19日
    浏览(46)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:使用低代码进行开发

    OpenHarmony低代码开发方式,具有丰富的UI界面编辑功能,遵循JS、TS开发规范 ,通过可视化界面开发方式快速构建布局,可有效降低用户的时间成本和提升用户构建UI界面的效率。 说明 支持使用低代码进行JS/eTS页面开发,本章节以开发eTS页面为例,介绍低代码功能及使用方法。

    2024年02月19日
    浏览(44)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:编译构建概述

    目录 OpenHarmony构建体系 构建工具Hvigor 构建插件hvigor-ohos-plugin 工程目录及配置文件说明 如何构建应用/服务 启动应用/服务构建 查看编译过程

    2024年02月22日
    浏览(43)
  • 鸿蒙开发实战-OpenHarmony之天气应用

    功能描述: 通过请求免费API获取指定城市七天内相关天气信息 开发环境: IDE:DEV ECO 4.0.600 SDK:4.0.10.15 开发板:DAYU200 4.0.10.16 一. 创建项目,调试环境 1.创建项目 2.选择OpenHarmony、API10 3.连网条件下加载依赖 4.在开发板上签名,运行HelloWorld测试环境 直接运行,然后点击log报错直

    2024年02月21日
    浏览(38)
  • 【OpenHarmony-鸿蒙】 华为智能家居IoT设备开发-环境搭建篇 一键部署开发环境

    轻量与小型系统入门概述 简介 OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB)。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。 开发环境 开发者通常习惯采用Windows+Ubuntu环境进行OpenHa

    2024年02月12日
    浏览(36)
  • HarmonyOS/OpenHarmony原生应用开发-华为Serverless云端服务支持说明(一)

    云端服务的实现是 HarmonyOS/OpenHarmony原生应用开发的一个重要的环节,如果用户端是鸿蒙原生应用,但是服务端即云端还是基于传统的各种WEB网络框架、数据库与云服务器,那么所谓的原生应用开发实现的数据即后端服务是和以前、现在的互联网、移动互联网应用是一样的,等

    2024年02月07日
    浏览(43)
  • HarmonyOS鸿蒙原生应用开发设计- 华为分享图标

    HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等,减少自主创作华为分享图标的工作量

    2024年02月08日
    浏览(45)
  • 【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇

    ​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 目录 HarmonyOS 4.0 技术介绍: HarmonyOS三大特征:     1.实现硬件互助,资源共享。      2. 面向开发者,实现一次开发,多端部署。  3.一套操

    2024年02月05日
    浏览(34)
  • 华为鸿蒙HarmonyOS应用开发者高级认证试题及答案

    判断 1只要使用端云一体化的云端资源就需要支付费用(错) 2所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。(错) 3 HarmonyOS应用可以兼容OpenHarmony生态(对) 4 使用端云一体化开发,无需自己搭建服务器,并进行运维了。(对) 5基于端

    2024年02月04日
    浏览(52)
  • 鸿蒙HarmonyOS开发实战—多媒体开发(音频开发 一)

    HarmonyOS音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。 基本概念 采样 采样是指将连续时域上的模拟信号按照一定的时间间隔采样,获取到离散时域上离散信号的过程。 采样率 采样率为每秒从连续信号中提取并

    2024年01月24日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包