HarmonyOS 鸿蒙Next中Device File Browser目录信息大小问题

HarmonyOS 鸿蒙Next中Device File Browser目录信息大小问题

async () => {
  // 获取应用文件路径
  let context = getContext(this).getApplicationContext()
  let pathDir = context.cacheDir;
  let dstPath = pathDir + `/im`;
  let exist = await BIMFileUtils.fileExist(dstPath);
  if (exist) {
    let stat = fs.statSync(dstPath);
    console.info("<<<<<<<数据库stat.size: " + stat.size);
    console.log(`<<<<<<<<dstPath${JSON.stringify(dstPath)}`)
  }
}

通过此方法获取im目录信息,发现im目录的大小一直都是3.3KB,而该目录下的文件都不止这一点

cke_5357.png

进行同步操作数值也没改变,这是何原因


更多关于HarmonyOS 鸿蒙Next中Device File Browser目录信息大小问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这个显示的是,目录文件夹本身的大小,而不是目录中所有文件大小。

更多关于HarmonyOS 鸿蒙Next中Device File Browser目录信息大小问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next的Device File Browser中显示的文件大小信息基于系统文件管理服务提供的数据。该服务通过鸿蒙分布式文件系统(HDFS)获取存储设备元数据,包括文件实际占用空间和逻辑大小。若出现显示异常,可能是由于缓存未及时更新或特定文件系统(如F2FS/EROFS)的统计机制差异导致。可通过重启文件管理应用或清除缓存尝试刷新数据。

在HarmonyOS Next中,fs.statSync()返回的目录大小信息可能不包含目录下所有文件的总大小,而是目录元数据本身的大小(如inode信息)。这是文件系统设计的常见行为,目录的size字段通常不代表其内容的总大小。

如果需要获取目录的实际占用空间(包含所有子文件和子目录),建议递归遍历目录并累加所有文件的size值。可以使用fs.readDirSync()获取目录内容,然后对每个条目进行判断:如果是文件则直接累加size,如果是目录则递归处理。

示例代码框架:

function getTotalSize(dirPath) {
  let total = 0;
  const items = fs.readDirSync(dirPath);
  for (const item of items) {
    const fullPath = path.join(dirPath, item);
    const stat = fs.statSync(fullPath);
    if (stat.isFile()) {
      total += stat.size;
    } else if (stat.isDirectory()) {
      total += getTotalSize(fullPath);
    }
  }
  return total;
}

这样就能准确计算目录的实际磁盘使用量。

回到顶部