zoukankan      html  css  js  c++  java
  • 用NSFileManager实现文件夹占内存计算

    NSFileManager计算文件/文件夹占内存大小

    在一些软件中,一般都会给用户展现当前APP的内存,同时用户可以根据自己的需要来清除缓存的内容。一般而言,文件夹是没有大小这个属性的,所以需要遍历文件夹的内容来计算文件夹的大小,下面用NSFileManger来实现这个功能。

    了解到文件/文件夹路径是一个NSString字符串类型,所以可以给字符串添加分类,如果其是文件/文件夹实现计算其大小的功能。分类命名为fileSize.

    - (NSInteger)fileSize{
          //文件管理者
          NSFileManager *mgr = [NSFileManager defaultManager];
          //判断字符串是否为文件/文件夹
          BOOL dir = NO;
          BOOL exists = [mgr fileExistsAtPath:self isDirctory:&dir];
          //文件/文件夹不存在
          if (exists == NO) return 0;
          //self是文件夹
         if (dir){
              //遍历文件夹中的所有内容
              NSArray *subpaths = [mgr subpathsAtPath:self];
              //计算文件夹大小
              NSInteger totalByteSize = 0;
              for (NSString *subpath in subpaths){
                 //拼接全路径                 
                 NSString *fullSubPath = [self stringByAppendingPathComponent:subpath];
                 //判断是否为文件
                 BOOL dir = NO;
                 [mgr fileExistsAtPath:fullSubPath isDirectory:&dir];
                 if (dir == NO){//是文件
                        NSDictionary *attr = [mgr attributesOffItemAtPath:fullSubPath error:ni];
                        totalByteSize += [attr[NSFileSize] integerValue];
                  }
              }
              return totalByteSize;      
         } else{//是文件
               NSDictionary *attr = [mgr attributesOffItemAtPath:self error:ni];
                return [attr[NSFileSize] integerValue];
       }   
    }    

    这样就可以实现文件/文件夹大小的计算

    比如计算Caches文件的大小

    NSString *caches =[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    Integer cachesSize = [caches fileSize];

    如果是非文件/文件夹的字符串,大小则为0

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    Vue-router路由传参三种方法及区别
    Vue.mixins混入方法的使用
    移动端自适应方案—rem布局
    JS获取页面宽度高度及Vue页面自适应方案
    Vue实现文件的上传与下载
    Prometheus第六篇:prometheus高可用架构
    Prometheus第五篇:prometheus告警规则配置和通过alertmanager精准发送告警
    Prometheus第四篇:prometheus服务发现方式解析
    Prometheus第三篇:prometheus.yml配置解析
    Prometheus第二篇:Prometheus部署
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779813.html
Copyright © 2011-2022 走看看