鸿蒙Next如何获取剩余空间

在鸿蒙Next系统中,如何查看设备的剩余存储空间?是否有API可以获取具体数值?求详细操作方法或代码示例。

2 回复

鸿蒙Next里想查剩余空间?简单!调用ohos.file.fsgetFreeSize就行,代码一跑,存储空间有多少“余粮”立马现形~ 记得先申请权限,不然系统会傲娇地拒绝你哦!

更多关于鸿蒙Next如何获取剩余空间的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,获取设备存储的剩余空间可以通过文件管理API实现。以下是具体步骤和示例代码:

关键API

使用 @ohos.file.fs 模块的 getFreeSize 方法,直接获取指定目录的剩余可用空间(单位:字节)。

示例代码

import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';

async function getFreeSpace(context: common.Context): Promise<number> {
  try {
    // 获取应用沙箱路径(如需要系统存储需申请权限)
    let path: string = context.filesDir;
    // 获取剩余空间(字节)
    let freeSize: number = await fs.getFreeSize(path);
    console.log(`Free space: ${freeSize} bytes`);
    return freeSize;
  } catch (error) {
    console.error(`Failed to get free space. Code: ${error.code}, Message: ${error.message}`);
    return -1;
  }
}

// 调用示例(在Ability或UI中)
// const freeBytes = await getFreeSpace(this.context);
// 可转换为GB/MB: (freeBytes / 1024 ** 3).toFixed(2) + ' GB'

注意事项

  1. 路径选择

    • 默认获取应用沙箱目录的剩余空间(无需权限)。
    • 如需系统存储(如 /storage)需申请 ohos.permission.STORAGE_MANAGER 权限,并配置模块权限。
  2. 权限申请(系统存储时):

    • module.json5 中添加:
      "requestPermissions": [
        {
          "name": "ohos.permission.STORAGE_MANAGER",
          "reason": "$string:reason_desc",
          "usedScene": {
            "abilities": ["EntryAbility"],
            "when": "always"
          }
        }
      ]
      
  3. 单位转换

    • 将字节转换为更友好单位(如MB/GB):
      function formatBytes(bytes: number): string {
        const units = ['GB', 'MB'];
        const size = bytes / (1024 ** 3); // 转换为GB
        return size >= 1 ? `${size.toFixed(2)} GB` : `${(bytes / (1024 ** 2)).toFixed(2)} MB`;
      }
      

返回结果

  • 成功:返回剩余空间字节数(如 1024000000)。
  • 失败:返回 -1,需通过日志排查路径或权限问题。

此方法简单高效,适用于应用存储管理或清理功能开发。

回到顶部