沙箱目录的理解
访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。
优点:
- 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。
- 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。
文件操作接口
新建并读写一个文件
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%')
}
}
注意
在测试试用的时候,可以写数据,也可以读到数据,但是在模拟器的文档中找不到相关的文件。有大佬知道问题的可以留言哈