鸿蒙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,需通过日志排查路径或权限问题。
此方法简单高效,适用于应用存储管理或清理功能开发。

