HarmonyOS 应用沙箱中的文件判断异常

在应用中下载了一个压缩文件,并解压到应用沙箱目录/data/storage/el2/base/haps/entry/files/subAppResource,通过Device File Brower可以看到解压后的文件夹,然后使用下面的代码去计算该文件夹下的所有文件大小。

static async getFileSize(path: string) {
  let totalSize: number = 0;
  try {
    const access = await fs.access(path);
    if (access) {
      const stat = await fs.stat(path);
      if (stat.isDirectory()) {
        const files = await fs.listFile(path, { recursion: true });
        for (let file of files) {
          const stat = await fs.stat(file);
          totalSize += stat.size;
        }
      } else {
        totalSize = stat.size;
      }
    }
  } catch (e) {
    console.error(e);
  }
  return totalSize;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

调用上面方法的代码如下:

const subAppDir = `${this.context.filesDir}/subAppResource`;
const subAppSize: number = await AppFileUtils.getFileSize(subAppDir);
  • 1.
  • 2.

在执行fs.access方法时报错:

13900002 No such file or directory
  • 1.

HarmonyOS 应用沙箱中的文件判断异常 -鸿蒙开发者社区解决方案

参考示例:

async getFileSize(path: string) {
  let totalSize: number = 0;
  try {
    const access = await fs.access(path);
    if (access) {
      const stat = await fs.stat(path);
      if (stat.isDirectory()) {
        const files = await fs.listFile(path, { recursion: true });
        for (let file of files) {
          const stat = await fs.stat(path + file);
          totalSize += stat.size;
        }
      } else {
        totalSize = stat.size;
      }
    }
  } catch (e) {
    console.error(e);
  }
  return totalSize;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

HarmonyOS 是否有办法读取沙箱路径下的JSON文件的内容 <a name="section696111361354"></a>

HarmonyOS
2025-01-09 17:30:52
1061浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

可使用fs.readText读取,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fsreadtext

参考示例:

import { fileIo as fs } from '@kit.CoreFileKit';

function testJson() {
  let context = getContext();
  let pathDir = context.filesDir;
  let filePath = pathDir + "/test.json";
  let json: ESObject = { key: 1 }
  let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  let writeLen = fs.writeSync(file.fd, JSON.stringify(json));
  let json2 = fs.readTextSync(filePath)
  console.info("读取的json:" + json2);
  fs.closeSync(file);
}

@Entry
@Component
struct Page {
  build() {
    Column() {
      Text("测试")
        .padding(40)
        .onClick(() => {
          testJson()
        })
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
分享
微博
QQ
微信
回复
2025-01-09 20:09:55


相关问题
怎样查看应用沙箱文件
2452浏览 • 1回复 待解决
无法查看应用沙箱文件
1444浏览 • 1回复 待解决
分享沙箱文件,应用可分享单个文件
1917浏览 • 1回复 待解决
HarmonyOS 沙箱文件拷贝
1305浏览 • 1回复 待解决
HarmonyOS 如何查看沙箱对应文件
1304浏览 • 1回复 待解决
沙箱路径文件怎么拿取?
2547浏览 • 1回复 待解决
HarmonyOS 查看手机沙箱文件
1106浏览 • 1回复 待解决
HarmonyOS 预览沙箱路径下文件失败
676浏览 • 1回复 待解决