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

harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作
牵扯到两个支持点: fs和content这两个API;

具体的操作方法看下图:
在这里插入图片描述

创建文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖

// 增加文件
creatDir(){
	// 获取上下文
	 let content = featureAbility.getContent();
	 //  content.getFilesDir().then(path=>{}) 获取app的可操作沙箱路径
	 content.getFilesDir(path=>{
	 		// 定义要创建的文件
	 		let dirPath = path + '/testDir';
	 		fs.mkdir(dirPath, (err, res)=>{
	 			if(err) return console.log('文件创建失败', JSON.stringIfy(err));
				console.log('文件创建成功', JSON.stringIfy(res));
			})
	 }).catch(err => {
	 		if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));
	})
}
读文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖

readDir(){
	// 获取上下文
	 let content = featureAbility.getContent();
	 content.getFilesDir().then(path=>{
	 		let options = {
				// 是否递归向下查找文件 默认true(水平读取文件),
				recursion: false,
				// 查找文件的数量限制 (0, 代表查找全部文件)
				listNum: 0,
				// 文件过滤 后缀名、文件名、文件类型、文件大小
				filter:  {
					// 后缀名
                    // suffix: ['.png', '.txt'],
                    // 文件名
                    // displayName: ['xxx', 'xx', '...'],
                    // 文件类型 text/plan, auto/mp3,...,  mine匹配所有类型
                    // mineType: ['mine'],
                    // 文件大小 大于或等于当前数值 单位bit(b,kb,mb,gb,tb,pb)
                    fileSizeOver: 1024,
                    // 最后修改时间
                    // lastModifiedAfter: new Date(2025, 1, 1).getTime(),
                    // 是否排除media已有的文件
                    // excludeMedia: false
				}
			}
	 		fs.listFile(path, options).then(fileName=>{
				console.log('文件读取成功', JSON.stringIfy(res));
			}).catch(err => {
	 			if(err) return console.log('文件读取失败', JSON.stringIfy(err));
			})
	 }).catch(err => {
	 		if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));
	})
}
写文件
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖

writeFile(){
	// 获取上下文
	 let content = featureAbility.getContent();
	 content.getFilesDir().then(path=>{
	 		// 写文件遵从先读后写的规则,只有读取成功才能写入,所以这儿是sync同步操作, 打开文件配置项涉及两项(需要打开的文件路径, 打开时的规则模式mode)
	 		// @params path: 文件路径
	 		// @params mode:  fs.OpenMode.READ_WRITE/CREATE 规则模式/选项
	 		// mode 包含两种API: 1. READ_WRITE 文件存在读取并写入; 2.CREATE 文件不存在先创建在写入	 		
	 		let filePath = path. + '/test.txt'; // 指定文件
	 		let getFIle = fs.openSync(filePath,  fs.OpenMode.READ_WRITE |  fs.OpenMode.CREATE); // 打开文件
			// 写入方法 fs.write(file.fd,  text, {offset, length, encoding});
			// @params file.fd: 代表打开的文件,标示符
			// @params text: 写入的内容,可以是字符串或者数据流buffer
			// @params option {offset:写入的偏移量, length:  ‘写入长度’, encoding: “utf-8, 默认是utf-8”}
	 		fs.write(getFIle.fd,  '这是我要写入的内容',  {encoding: 'utf-8'}, (err, readLen)=>{
	 			if(err) return console.log('文件写入失败', JSON.stringIfy(err));
				console.log('文件写入成功','写入长度'+readLen);
			}).catch(err => {
	 			if(err) return console.log('文件写入失败'', JSON.stringIfy(err));
			})
	 }).catch(err => {
	 		if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));
	})
}
读成功写入的文件内容
//js 引入
import fs from "@ohos.files.fs"
import featureAbility from "@ohos.ability.featureAbility"; // 上下文依赖

readFile(){
	// 获取上下文
	 let content = featureAbility.getContent();
	 content.getFilesDir().then(path=>{
	 		// 写文件遵从先读后写的规则,只有读取成功才能写入,所以这儿是sync同步操作, 打开文件配置项涉及两项(需要打开的文件路径, 打开时的规则模式mode)
	 		// @params path: 文件路径
	 		// @params mode:  fs.OpenMode.READ_WRITE/CREATE 规则模式/选项
	 		// mode 包含两种API: 1. READ_WRITE 文件存在读取并写入; 2.CREATE 文件不存在先创建在写入	 		
	 		let filePath = path. + '/test.txt'; // 指定文件
	 		let getFIle = fs.openSync(filePath,  fs.OpenMode.READ_WRITE); // 打开文件
			// 写入方法 fs.read(file.fd,  text, {offset, length, encoding});
			// @params file.fd: 代表打开的文件,标示符
            let buf = new ArrayBuffer('写入的内容');
            let con = fs.read(file.fd, buf, (err, readLen) => {
                console.log('zhaowb 读取成功:'+readLen)
                // 1. 获取到成功写入的长度,截取buffer部分内容
                // buf.slice(0, readLen)
                // 2. 将获取到的buffer内容转化为无序的8位的二进制数组(给chartCode提供数据源)
                // new Uint8Array(buf.slice(0, readLen))
                // 3. 转换成字符串,需要调用String上方法,通过String支持的fromCharCode, String.fromCharCode 支持单个编码转化,数组需结合apply或bind
                // String.fromCharCode(new Uint8Array(buf.slice(0, readLen)))
                // 4. 终极转化,完成最终的code编码转字符串, 数组的转化得调用
                // String.fromCharCode.apply(null, String.fromCharCode(new Uint8Array(buf.slice(0, readLen))));
            })catch(err => {
	 			if(err) return console.log('文件写入失败'', JSON.stringIfy(err));
			})
	 }).catch(err => {
	 		if(err) return console.log('app沙箱路径获取失败', JSON.stringIfy(err));
	})
}

相关文章:

  • 从入门到精通:解锁页面对象模型(POM)的秘密武器
  • C++(dereference)取值符和(address-of)取址符的翻译说明
  • MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子
  • 单调队列与栈
  • 如何取消WPS Excel文件密码
  • 2.14学习总结
  • 【论文阅读】Revisiting the Assumption of Latent Separability for Backdoor Defenses
  • 用 Python 实现 DeepSeek R1 本地化部署
  • Prompt 工程优化方
  • 一区IEEE Trans|特征模态分解FMD,一维数据分解新方法-matlab免费代码
  • 自有证书的rancher集群使用rke部署k8s集群异常
  • C++ STL 容器
  • Visual Studio 编译 onnxruntime 1.14.1 更低版本兼容Win7
  • IOTDB安装部署
  • 【linux】文件与目录命令 - ln
  • 网络安全 | 网络攻击介绍
  • linux 安装nginx
  • python 指定目录位置,查找指定扩展名的文件是否有指定的关键字
  • # 解析Excel文件:处理Excel xlsx file not supported错误 [特殊字符]
  • 【Mastering Vim 2_03】第二章:精通 Vim 高级技巧之:编辑与浏览技巧 + 第三方增强插件的用法
  • 荥阳市建设局 网站/免费网站seo优化
  • 做网站需要好多钱/免费的网站申请
  • 08 iis创建网站/南京百度搜索优化
  • 企业微信开发教程/搜索引擎优化包括哪些内容
  • 狠狠做网站/营销方式
  • 珠海网站建设专线/武汉网络推广网络营销