博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oc 根据文件路径获取文件大小
阅读量:6036 次
发布时间:2019-06-20

本文共 3152 字,大约阅读时间需要 10 分钟。

第一种封装:

-(NSInteger)getSizeOfFilePath:(NSString *)filePath{    /** 定义记录大小 */    NSInteger totalSize = 0;    /** 创建一个文件管理对象 */    NSFileManager * manager = [NSFileManager defaultManager];    /**获取文件下的所有路径包括子路径 */    NSArray * subPaths = [manager subpathsAtPath:filePath];    /** 遍历获取文件名称 */    for (NSString * fileName in subPaths) {        /** 拼接获取完整路径 */        NSString * subPath = [filePath stringByAppendingPathComponent:fileName];        /** 判断是否是隐藏文件 */        if ([fileName hasPrefix:@".DS"]) {            continue;        }        /** 判断是否是文件夹 */        BOOL isDirectory;        [manager fileExistsAtPath:subPath isDirectory:&isDirectory];        if (isDirectory) {            continue;        }        /** 获取文件属性 */        NSDictionary *dict = [manager attributesOfItemAtPath:subPath error:nil];        /** 累加 */        totalSize += [dict fileSize];            }    /** 返回 */    return totalSize;}

第二种  block:

/** 根据文件路径删除文件 */+(void)removeDirectoryPath:(NSString *)directoryPath{    /** 创建文件管理者 */    NSFileManager * manager = [NSFileManager defaultManager];    /** 判断文件路径是否存在 */    BOOL isDirectory;    BOOL isExist = [manager fileExistsAtPath:directoryPath isDirectory:&isDirectory];    if (!isDirectory||!isExist) {        /** 提示错误信息 */        @throw [NSException exceptionWithName:NSStringFromClass(self) reason:@"文件路径错误!" userInfo:nil];    }    /** 删除文件 */    [manager removeItemAtPath:directoryPath error:nil];    /** 创建文件 */    [manager createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil];}/** 根据文件路径获取文件大小 */+(void)getSizeOfFilePath:(NSString *)filePath completion:(void (^)(NSInteger totalSize))completion{        /** 创建文件管理者 */    NSFileManager * manager = [NSFileManager defaultManager];    /** 判断文件路径是否存在 */    BOOL isDirectory;    BOOL isExist = [manager fileExistsAtPath:filePath isDirectory:&isDirectory];    if (!isDirectory||!isExist) {        /** 提示错误信息 */        @throw [NSException exceptionWithName:NSStringFromClass(self) reason:@"文件路径错误!" userInfo:nil];    }    /** 开启子线程因以下是耗时操作 */    dispatch_async(dispatch_get_global_queue(0, 0), ^{        /** 定义记录文件大小 */        NSInteger totalSize = 0;                /** 获取文件 */        NSArray * subPaths = [manager subpathsAtPath:filePath];        /** 遍历文件 */        for (NSString * fileName in subPaths) {            /** 拼接完整路径 */            NSString * subPath = [filePath stringByAppendingPathComponent:fileName];            /** 判断是否是隐藏.DS_Store */            if ([subPath hasPrefix:@".DS"]) {                continue;            }            /** 判断是否是文件夹 */            BOOL isDirectory;            [manager fileExistsAtPath:subPath isDirectory:&isDirectory];            if (isDirectory) {                continue;            }            /** 获取文件属性 */            NSDictionary * dic = [manager attributesOfItemAtPath:subPath error:nil];            totalSize += [dic fileSize];        }         /** 回到主线程 */        dispatch_sync(dispatch_get_main_queue(), ^{            /** block不为空 */            if (completion) {                completion(totalSize);            }        });    });    }

 

转载于:https://www.cnblogs.com/fleas/p/5723967.html

你可能感兴趣的文章
技术花絮
查看>>
责任心与态度比技术更重要
查看>>
贪婪与非贪婪模式
查看>>
OLTP与OLAP介绍
查看>>
hdu 4707 Pet 2013年ICPC热身赛A题 dfs水题
查看>>
分享几个linux系统版本的查看命令
查看>>
php调试工具总结
查看>>
iOS: Sorted Array with Compare
查看>>
Openstack配置文件管理的变迁之路
查看>>
安装好centOS5.5 后中文乱码
查看>>
java基础---->Zip压缩的使用(转)
查看>>
iOS 自定义NavigationBar右侧按钮rightBarButtonItem--button
查看>>
IOS--- NavigationBar标题按钮
查看>>
Error -26631: HTTP Status-Code=400 (Bad Request) for
查看>>
HTTPclient cookie的获取与设置
查看>>
c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down...
查看>>
震惊世界的语言——iOS开发新星(Swift)
查看>>
AWS 推出 OpenJDK 长期支持版本 Amazon Corretto
查看>>
劲爆!魔都人民打开流量“不限量”的正确方式
查看>>
又美又好玩的南京“善行者”这才是正确的打开方式
查看>>