• 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。

     

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    静态方法中访问类的实例成员
    静态初始化块
    Java字段初始化的规律
    java中函数重载
    哈姆雷特观后感 一把辛酸泪
    枚举
    验证码
    四则运算
    JAVA输出中+号的作用以及如何使用
    dev控件ASPxComboBox设置ReadOnly="true"后
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/5257892.html
Copyright © 2020-2023  润新知