【HarmonyOS学习】应用文件访问

简介: 访问和管理应用文件,对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,是应用文件目录与一部分系统文件所在的目录组成的集合。也就是应用可见的目录范围即为“应用沙箱目录”。优点:* 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。* 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。

沙箱目录的理解

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

优点:

  • 隔离性:应用沙箱提供了一个完全隔离的环境,使用户可以安全地访问应用文件。
  • 安全性:应用沙箱限制了应用可见地数据地最小范围,保护了应用文件地安全。

image.png

文件操作接口

image.png

新建并读写一个文件

image.png

image.png

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天前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
本篇将带你实现一个虚拟音乐控制台。用户可以通过界面控制音乐的播放、暂停、切换歌曲,并查看当前播放的歌曲信息。页面还支持调整音量和动态显示播放进度,是音乐播放器界面开发的基础功能示例。
112 80
|
16小时前
|
开发者
【HarmonyOS Next开发】用户文件访问
文件所有者为登录到该终端设备的用户,包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为,需要提前获取用户授权,或由用户操作完成。
18 10
|
16小时前
【HarmonyOS学习】应用程序包
一个应用中的所有.hap与.hsp文件合在一起称为Bundle,其对应的bundleName是应用的唯一标识 当应用发布上架到应用市场时,需要将Bundle打包为一个.app后缀的文件用于上架,这个.app文件称为App Pack(Application Package),与此同时,DevEco Studio工具自动会生成一个pack.info文件。pack.info文件描述了App Pack中每个HAP和HSP的属性,包含APP中的bundleName和versionCode信息、以及Module中的name、type和abilities等信息。
14 5
|
16小时前
|
API
鸿蒙开发学习:动画
鸿蒙原生动画API使用
11 4
|
1天前
|
人工智能 文字识别 算法
|
1天前
|
安全 Java 开发者
|
19小时前
|
安全 数据安全/隐私保护
鸿蒙开发:一文了解软键盘相关
软键盘最主要的就是合理的进行避让,不能遮挡可输入组件,再有多个输入框的时候,需要动态的进行设置高度,这一点需要注意。
鸿蒙开发:一文了解软键盘相关
|
19小时前
鸿蒙开发:一个轻盈的上拉下拉刷新组件
在和可滑动组件使用的时候,记得一定要和nestedScroll属性配合使用,用于解决滑动冲突,除此之外,还需要传递滑动组件的scroller属性,用于手势操作。
鸿蒙开发:一个轻盈的上拉下拉刷新组件
|
1天前
|
开发框架 前端开发 JavaScript
uniapp开发鸿蒙,是前端新出路吗?
相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋。猫林老师作为7年前端er也是非常激动,第一时间体验了下。在这里也给大家分享一下我的看法
29 17

热门文章

最新文章