如何使用Flutter获取应用支持目录的大小?
获取Flutter应用目录大小的实现方法
要计算指定目录的总容量,需要递归遍历目录下的所有文件(包括子目录中的文件),累加每个文件的字节大小。以下是具体实现:
1. 实现目录大小计算函数
导入必要的包后,编写递归计算目录大小的函数:
import 'dart:io'; import 'package:path/path.dart' as path; Future<int> calculateDirectorySize(String directoryPath) async { int totalSize = 0; final directory = Directory(directoryPath); // 目录不存在时返回0 if (!await directory.exists()) { return 0; } // 递归遍历目录下所有实体 final entities = directory.list(recursive: true); await for (final entity in entities) { // 仅计算文件大小 if (entity is File) { totalSize += await entity.length(); } } return totalSize; }
2. 结合你的代码调用函数
将你获取的应用支持目录路径传入函数,即可得到总大小,还可以转换为更易读的单位:
final String directoryPath = (await getApplicationSupportDirectory()).path; int totalBytes = await calculateDirectorySize(directoryPath); // 转换为KB/MB单位 double sizeInKB = totalBytes / 1024; double sizeInMB = sizeInKB / 1024; print('目录总大小:${sizeInMB.toStringAsFixed(2)} MB');
注意事项
- 函数会自动处理子目录,遍历所有层级的文件
- 若目标目录不存在,会直接返回0
- 可以根据需求调整单位转换逻辑,比如转为GB等
内容的提问来源于stack exchange,提问作者ASMA
相关产品推荐
相关产品推荐

