dart删除旧版本缓存包

稿件来源: 阳光企业网站管理系统   撰稿作者: 太阳光   发表日期: 2019-04-02   阅读次数: 1799   查看权限: 游客查看

dart旧版本的包越来越多,资源占用也不小,可使用以下方法删除

import 'dart:io';

Map<String, List> _mapList = new Map();

String getPubPath() {
  var path = Platform.environment["PUB_CACHE"];
  if (path == null) {
    path = Platform.isWindows ? Platform.environment["APPDATA"] + r"/pub/cache/hosted/pub.flutter-io.cn" : r"~/.pub-cache/hosted/pub.flutter-io.cn";
  }
  if (!new Directory(path).existsSync()) {
    print(r"[错误]未找到Pub缓存目录!");
    exit(-1);
  }
  print("[提示]Pub缓存目录:${path}");
  return path;
}

void cleanCacheDir() {
  String path = getPubPath();
  Directory cacheDir = new Directory(path);

  //遍历所有文件夹
  List<FileSystemEntity> packageList = cacheDir.listSync();
  for (var i in packageList) {
    String packagePath = i.absolute.path;
    String fullName = packagePath.substring(packagePath.lastIndexOf(new RegExp(r"[/\\]")) + 1);
    RegExp reg = new RegExp(r"(^.+)(-\d+\..*$)");
    if(reg.hasMatch(fullName)){
      Iterable<Match> matches = reg.allMatches(fullName);
      for(var match in matches) {
        var key = match.group(1);
        if(_mapList[key] == null){
          _mapList[key] = new List();
        }
        _mapList[key].add(match.group(2));
      }
    }
  }
  for(var key in _mapList.keys) {
    List arr = _mapList[key];
    if(arr.length > 1){
      // 排序版本
      arr.sort((a, b) => b.compareTo(a));
      // 遍历旧版本并删除
      arr.sublist(1).forEach((server){
        File file = new File(path + "/" + key + server);
        print("[Delete] ${file.path}");
        file.delete(recursive: true);
      });
    }
  }
  print("已经清理完毕!");
}

main() async {
  cleanCacheDir();
}

 

关键词: dart,flutter,包   编辑时间: 2019-04-02 14:45:07

  • 感到高兴

    0

    高兴
  • 感到支持

    0

    支持
  • 感到搞笑

    0

    搞笑
  • 感到不解

    0

    不解
  • 感到谎言

    0

    谎言
  • 感到枪稿

    0

    枪稿
  • 感到震惊

    0

    震惊
  • 感到无奈

    0

    无奈
  • 感到无聊

    0

    无聊
  • 感到反对

    0

    反对
  • 感到愤怒

    0

    愤怒
0%(0)
0%(0)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐