鸿蒙Next如何获取剩余空间
在鸿蒙Next系统中,如何查看设备的剩余存储空间?是否有API可以获取具体数值?求详细操作方法或代码示例。
        
          2 回复
        
      
      
        鸿蒙Next里想查剩余空间?简单!调用ohos.file.fs的getFreeSize就行,代码一跑,存储空间有多少“余粮”立马现形~ 记得先申请权限,不然系统会傲娇地拒绝你哦!
更多关于鸿蒙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'
注意事项
- 
路径选择:
- 默认获取应用沙箱目录的剩余空间(无需权限)。
 - 如需系统存储(如 
/storage)需申请ohos.permission.STORAGE_MANAGER权限,并配置模块权限。 
 - 
权限申请(系统存储时):
- 在 
module.json5中添加:"requestPermissions": [ { "name": "ohos.permission.STORAGE_MANAGER", "reason": "$string:reason_desc", "usedScene": { "abilities": ["EntryAbility"], "when": "always" } } ] 
 - 在 
 - 
单位转换:
- 将字节转换为更友好单位(如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`; } 
 - 将字节转换为更友好单位(如MB/GB):
 
返回结果
- 成功:返回剩余空间字节数(如 
1024000000)。 - 失败:返回 
-1,需通过日志排查路径或权限问题。 
此方法简单高效,适用于应用存储管理或清理功能开发。
        
      
                  
                  
                  
