cache_util.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'dart:io';
  2. import 'package:path_provider/path_provider.dart';
  3. class CacheUtil {
  4. // 获取缓存大小
  5. static Future<int> getCacheSize() async {
  6. Directory tempDir = await getTemporaryDirectory();
  7. if (!await tempDir.exists()) return 0;
  8. return await _calculateSize(tempDir);
  9. }
  10. // 递归计算目录大小
  11. static Future<int> _calculateSize(FileSystemEntity file) async {
  12. if (file is File) return await file.length();
  13. if (file is Directory) {
  14. int total = 0;
  15. final children = file.listSync();
  16. for (final child in children) {
  17. total += await _calculateSize(child);
  18. }
  19. return total;
  20. }
  21. return 0;
  22. }
  23. // 清理缓存
  24. static Future<void> clearCache() async {
  25. Directory tempDir = await getTemporaryDirectory();
  26. if (await tempDir.exists()) {
  27. await _deleteDirectory(tempDir);
  28. }
  29. }
  30. // 递归删除目录
  31. static Future<void> _deleteDirectory(FileSystemEntity file) async {
  32. if (file is Directory) {
  33. final children = file.listSync();
  34. for (final child in children) {
  35. await _deleteDirectory(child);
  36. }
  37. await file.delete();
  38. } else if (file is File) {
  39. await file.delete();
  40. }
  41. }
  42. }