我想在 flutter 中获取目录的总大小,包括它的 files ,它的子文件夹中的 files 等等。
我尝试使用Directory.statSync,但它似乎只返回目录本身的元大小。
我应该递归遍历目录来计算大小吗?如果是这样,是否有一个 dart 包已经这样做了(我找不到)?
如果没有,有什么更有效的方法可用?
这是一个递归遍历目录的示例(同步版本)。异步版本可以使用 dir.list() 及其 listen() 方法完成。
Map<String, int> dirStatSync(String dirPath) {
int fileNum = 0;
int totalSize = 0;
var dir = Directory(dirPath);
try {
if (dir.existsSync()) {
dir.listSync(recursive: true, followLinks: false)
.forEach((FileSystemEntity entity) {
if (entity is File) {
fileNum++;
totalSize += entity.lengthSync();
}
});
}
} catch (e) {
print(e.toString());
}
return {'fileNum': fileNum, 'size': totalSize};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |