计算APP沙盒路径下的某个文件夹的大小

一般APP应用里都会有个清除缓存的功能,需要显示缓存文件夹的大小,并且可以清除缓存文件。

- (NSInteger)getFileSize:(NSString *)directoryPath{
    /*
     1. 获取文件夹路径
     2. 遍历所有的子文件(不包括隐藏的文件和文件夹本身)
     3. 计算每个子文件的大小并累加
     */
    NSInteger fileSize = 0;
    
    
    // 获取文件管理者
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    // 获取所有子文件的路径
    NSArray *subPaths = [fileMgr subpathsAtPath:directoryPath];
    
    for (NSString *subPath in subPaths) {
        // 拼接文件的全路径
        NSString *path = [directoryPath stringByAppendingPathComponent:subPath];
        // 判断是否为隐藏文件,真机中可注释此代码
        if ([subPath containsString:@".DS"]) continue;
        // 判断是否为文件夹
        BOOL isDirectory;
        BOOL isExist = [fileMgr fileExistsAtPath:path isDirectory:&isDirectory]; // 判断当前是否为文件夹,并且返回该文件夹是否存在
        if (isDirectory || !isExist) continue; // 该文件是文件夹或者该文件夹不存在,则继续
        
        // 获取文件尺寸
        NSDictionary *attr = [fileMgr attributesOfItemAtPath:path error:nil];
        // 计算文件的大小
        fileSize  += [attr fileSize];
    }
    return fileSize;
}

你可能感兴趣的:(计算APP沙盒路径下的某个文件夹的大小)