​ 沙箱目录的理解

访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。

优点:


隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。


安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。



图片

文件操作接口

图片

新建并读写一个文件

图片

图片

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%')

}
}

图片

注意

在测试试用的时候,可以写数据,也可以读到数据,但是在模拟器的文档中找不到相关的文件。有大佬知道问题的可以留言哈


奥尼ᴮᴵᴹᵉʳ
1 声望0 粉丝