zoukankan      html  css  js  c++  java
  • NSFileManager与沙盒 --- 清除缓存

    思维导图:清除缓存整体思路

    一、沙盒的文件

    1、Documents:存储用户常用的文件(比较小的文件,因为备份时会备份这个文件夹下的内容)

    2、Library: 存储的是缓存文件或者说是下载的文件。

    3、Tmp: 存储的是临时文件。

    二、NSFileManager操作清除缓存

     方法一:计算所有文件夹大小及文件大小(会遍历文件夹中所有文件夹中的文件)

    NSFileManager *mag = [NSFileManager defaultManager];
    __block long long size = 0;
    NSDirectoryEnumerator *enums = [mag enumeratorAtPath:dirPath];
    for (NSString *subString in enums) {
        //用目录路径拼接文件管理目录中的子文件路径等到全路径,如dirPath/A,dirPath/B,这样的话就可以获取所有文件夹下内容的大小
        NSString *fullString = [dirPath stringByAppendingPathComponent:subString];
        //取出所有文件、文件夹的属性计算尺寸
        size += [mag attributesOfItemAtPath:fullString error:nil].fileSize;
        NSLog(@"%zd",size);
    }

     方法二:计算所有文件的大小(不会遍历里面文件夹)

    //subpathsAtPath:返回NSArray提供的所有内容和递归子路径路,意思是说比较耗时
    NSArray *asg = [mag subpathsAtPath:dirPath];
          __block long long size = 0;
    for (NSString *subString in asg) {
        //全路径,
        NSString *fullPath = [dirPath stringByAppendingPathComponent:subString];
        //文件的属性,遍历文件夹中所有文件或文件夹。
        NSDictionary *attri = [mag attributesOfItemAtPath:fullPath error:nil];
        size += [attri fileSize];
        NSLog(@"%.2lldM",size);
    }
    

     三、封装成NSString的分类方法

        unsigned long long size = 0;
        NSFileManager *fileM = [NSFileManager defaultManager];
        NSDictionary *attri = [fileM attributesOfItemAtPath:self error:nil];
    //    BOOL isExist = NO;
    //    [fileM fileExistsAtPath:self isDirectory:&isExist];
    //    if (isExist) {
    //    } //这个方法也是判断文件夹是否存在
    
        if (attri.fileType == NSFileTypeDirectory) {//是否为文件夹
            NSDirectoryEnumerator *enums = [fileM enumeratorAtPath:self];
            for (NSString *subString in enums) {
                //用目录路径拼接文件管理目录中的子文件路径等到全路径,如dirPath/A,dirPath/B,这样的话就可以获取所有文件夹下内容的大小
                NSString *fullString = [self stringByAppendingPathComponent:subString];
                //取出所有文件、文件夹的属性计算尺寸
                size += [fileM attributesOfItemAtPath:fullString error:nil].fileSize;
            }
        }else{
            NSArray *files = [fileM subpathsAtPath:self];
            for (NSString *subString in files) {
                NSString *fullPath = [self stringByAppendingPathComponent:subString];
                size += [fileM attributesOfItemAtPath:fullPath error:nil].fileSize;
            }
        }
        return size;
    将来的自己,会感谢现在不放弃的自己!
  • 相关阅读:
    变量定义方法
    动态编译
    函数
    过程
    触发器
    高级聚合函数rollup(),cube(),grouping sets()
    高级函数-decode
    高级函数-sign
    js 保留两位小数 javascript
    js 发红包
  • 原文地址:https://www.cnblogs.com/TheYouth/p/6557085.html
Copyright © 2011-2022 走看看