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;
}

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

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

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

13900002 No such file or directory

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;
}

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

HarmonyOS
2天前
浏览
收藏 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()
        })
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
怎样查看应用沙箱文件
1885浏览 • 1回复 待解决
无法查看应用沙箱文件
605浏览 • 1回复 待解决
分享沙箱文件,应用可分享单个文件
1241浏览 • 1回复 待解决
HarmonyOS 沙箱文件拷贝
332浏览 • 1回复 待解决
沙箱路径文件怎么拿取?
1973浏览 • 1回复 待解决
HarmonyOS 预览沙箱路径下文件失败
149浏览 • 1回复 待解决
HarmonyOS 如何查看沙箱对应文件
135浏览 • 1回复 待解决