• 处理文件缓存


    处理文件缓存

     

    #import <Foundation/Foundation.h>

     

     

     

    @interface LZJFileTool : NSObject

     

    /**

     *  获取文件夹尺寸

     *

     *  @param directoryPath 文件夹路径

     *

     *  @return 返回文件夹尺寸

     */

    + (void)getFileSize:(NSString *)directoryPath completion:(void(^)(NSInteger))completion;

     

     

    /**

     *  删除文件夹所有文件

     *

     *  @param directoryPath 文件夹路径

     */

    + (void)removeDirectoryPath:(NSString *)directoryPath;

     

     

    @end

     



     

    #import "LZJFileTool.h"

     

    @implementation LZJFileTool

     

    + (void)removeDirectoryPath:(NSString *)directoryPath

    {

        // 获取文件管理者

        NSFileManager *mgr = [NSFileManager defaultManager];

        

        BOOL isDirectory;

        BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];

        

        if (!isExist || !isDirectory) {

            // 抛异常

            // name:异常名称

            // reason:报错原因

            NSException *excp = [NSException exceptionWithName:@"pathError" reason:@" 需要传入的是文件夹路径,并且路径要存在" userInfo:nil];

            [excp raise];

            

        }

        

        // 获取cache文件夹下所有文件,不包括子路径的子路径

        NSArray *subPaths = [mgr contentsOfDirectoryAtPath:directoryPath error:nil];

        

        for (NSString *subPath in subPaths) {

            // 拼接完成全路径

            NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];

            

            // 删除路径

            [mgr removeItemAtPath:filePath error:nil];

        }

     

    }

     

    // 自己去计算SDWebImage做的缓存

    + (void)getFileSize:(NSString *)directoryPath completion:(void(^)(NSInteger))completion

    {

        

        // 获取文件管理者

        NSFileManager *mgr = [NSFileManager defaultManager];

        BOOL isDirectory;

        BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];

        

        if (!isExist || !isDirectory) {

            // 抛异常

            // name:异常名称

            // reason:报错原因

           NSException *excp = [NSException exceptionWithName:@"pathError" reason:@" 需要传入的是文件夹路径,并且路径要存在" userInfo:nil];

            [excp raise];

            

        }

        

        dispatch_async(dispatch_get_global_queue(0, 0), ^{

            

            // 获取文件夹下所有的子路径,包含子路径的子路径

            NSArray *subPaths = [mgr subpathsAtPath:directoryPath];

            

            NSInteger totalSize = 0;

            

            for (NSString *subPath in subPaths) {

                // 获取文件全路径

                NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];

                

                // 判断隐藏文件

                if ([filePath containsString:@".DS"]) continue;

                

                // 判断是否文件夹

                BOOL isDirectory;

                // 判断文件是否存在,并且判断是否是文件夹

                BOOL isExist = [mgr fileExistsAtPath:filePath isDirectory:&isDirectory];

                if (!isExist || isDirectory) continue;

                

                // 获取文件属性

                // attributesOfItemAtPath:只能获取文件尺寸,获取文件夹不对,

                NSDictionary *attr = [mgr attributesOfItemAtPath:filePath error:nil];

                

                // 获取文件尺寸

                NSInteger fileSize = [attr fileSize];

                

                totalSize += fileSize;

            }

            

            // 计算完成回调

            dispatch_sync(dispatch_get_main_queue(), ^{

                if (completion) {

                    completion(totalSize);

                }

            });

            

            

     

        });

        

        

    }

     

    @end



     

  • 相关阅读:
    刷题-力扣-152. 乘积最大子数组
    刷题-力扣-剑指 Offer II 088. 爬楼梯的最少成本
    刷题-力扣-剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
    刷题-力扣-LCS 01. 下载插件
    刷题-力扣-剑指 Offer 10- II. 青蛙跳台阶问题
    20191107-3 beta week 2/2 Scrum立会报告+燃尽图 02
    beta week 2/2 Scrum立会报告+燃尽图 01
    版本控制报告
    20191031-9 beta week 1/2 Scrum立会报告+燃尽图 07
    扛把子组20191031-2 Beta阶段贡献分配规则
  • 原文地址:https://www.cnblogs.com/liuzhenjie/p/5501966.html
Copyright © 2020-2023  润新知