zoukankan      html  css  js  c++  java
  • 处理文件缓存

    处理文件缓存

     

    #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



     

  • 相关阅读:
    直播流RTMP 知识
    XSSearch 说明文档保存
    网海茫茫,有你最暖
    实践中 XunSearch(讯搜)更新索引方案对比
    实践中 XunSearch(讯搜)的使用教程步骤
    留的住的叫幸福,流逝的叫遗憾
    百度API ; 很多有用的接口及公用 数据
    ecshop 模板开发总结
    jquery库和cityselect插 件的省市 级联
    PHP Excel 下载数据,并分页下载
  • 原文地址:https://www.cnblogs.com/liuzhenjie/p/5501966.html
Copyright © 2011-2022 走看看