如何获取目录的大小,包括其文件

hgl*_*hgl 1 dart flutter

我想在 flutter 中获取目录的总大小,包括它的 files ,它的子文件夹中的 files 等等。

我尝试使用Directory.statSync,但它似乎只返回目录本身的元大小。

我应该递归遍历目录来计算大小吗?如果是这样,是否有一个 dart 包已经这样做了(我找不到)?

如果没有,有什么更有效的方法可用?

Sun*_*vis 7

这是一个递归遍历目录的示例(同步版本)。异步版本可以使用 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)