沙箱目录的理解
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。
优点:
- 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。
- 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。
文件操作接口
新建并读写一个文件
import { common } from '@kit.AbilityKit'; import { fileIo, ReadOptions } from '@kit.CoreFileKit'; import { buffer } from '@kit.ArkTS'; @Entry @Component struct File_Page { @State message: string = 'Hello World'; /** * 创建文件并写入内容 */ CreateFile(): void { let context = getContext(this) as common.UIAbilityContext; let filesDir = context.filesDir; //文件路径 let filePath: string = filesDir + "/MyTest.txt"; //新建并打开一个文件 let file = fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE); //写入内容 let writeLen = fileIo.writeSync(file.fd, "我是写入测试2"); fileIo.closeSync(file); } /** * 读取创建的文件 */ async ReadFile(): Promise<void> { let context = getContext(this) as common.UIAbilityContext; let filesDir = context.filesDir; //文件路径 let filePath: string = filesDir + "/MyTest.txt"; if (await fileIo.access(filePath) == false) { console.info("文件不存在"); return; } //打开一个文件 let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE); // 从文件读取一段内容 let arrayBuffer = new ArrayBuffer(2048); let readOptions: ReadOptions = { offset: 0, length: arrayBuffer.byteLength }; let readLen = fileIo.readSync(file.fd, arrayBuffer, readOptions); let buf = buffer.from(arrayBuffer, 0, readLen); console.info(buf.toString()); fileIo.closeSync(file); } build() { Column() { Button("点击创建文件") .width("80%") .onClick(() => this.CreateFile()) Button("点击读取文件内容") .width("80%") .margin({ top: 20 }) .onClick(() => this.ReadFile()) } .height('100%') .width('100%') } }
注意
在测试试用的时候,可以写数据,也可以读到数据,但是在模拟器的文档中找不到相关的文件。有大佬知道问题的可以留言哈