zoukankan      html  css  js  c++  java
  • NSFileManager计算文件/文件夹大小

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

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

     1 - (NSInteger)fileSize{
     2     //文件管理者
     3     NSFileManager *mgr = [NSFileManager defaultManager];
     4     //判断字符串是否为文件/文件夹
     5     BOOL dir = NO;
     6     BOOL exists = [mgr fileExistsAtPath:self isDirctory:&dir];
     7     //文件/文件夹不存在
     8     if (exists == NO) return 0;
     9     //self是文件夹
    10     if (dir){
    11          //遍历文件夹中的所有内容
    12          NSArray *subpaths = [mgr subpathsAtPath:self];
    13          //计算文件夹大小
    14          NSInteger totalByteSize = 0;
    15          for (NSString *subpath in subpaths){
    16               //拼接全路径
    17                NSString *fullSubPath = [self stringByAppendingPathComponent:subpath];
    18             //判断是否为文件
    19             BOOL dir = NO;
    20             [mgr fileExistsAtPath:fullSubPath isDirectory:&dir];
    21             if (dir == NO){//是文件
    22                    NSDictionary *attr = [mgr attributesOffItemAtPath:fullSubPath error:ni];
    23                    totalByteSize += [attr[NSFileSize] integerValue];
    24              }
    25          }
    26          return totalByteSize;      
    27     } else{//是文件
    28           NSDictionary *attr = [mgr attributesOffItemAtPath:self error:ni];
    29            return [attr[NSFileSize] integerValue];
    30    }   
    31 }    

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

    比如计算Caches文件的大小

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

    这样就得到了caches文件夹的大小。

    如果输入的字符串不是文件/文件夹的时候,得到0。

     

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    JavaWeb学习(17):优化三层(加入接口和 DBUtil)
    [每日一题]:The Lazy Cow(silver)
    JavaWeb学习(16): 三层架构模式实现简单的学生管理系统(内含数据库)
    BZOJ3275Number——二分图最大权独立集
    BZOJ3438小M的作物——最小割
    BZOJ2127happiness——最小割
    BZOJ3894文理分科——最小割
    BZOJ2150部落战争——最小路径覆盖
    BZOJ4205卡牌配对——最大流+建图优化
    BZOJ4032[HEOI2015]最短不公共子串——序列自动机+后缀自动机+DP+贪心
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/5257892.html
Copyright © 2011-2022 走看看