基于Swift3.0/OC的缓存清理功能的实现

来源:互联网 发布:ubuntu下配置lnmp 编辑:程序博客网 时间:2024/05/17 03:07

最近在写学习Swift ,用到了清除缓存功能,把它封装成了两个方法,下面是具体实现

//计算目录下缓存大小,并将计算的结果返回func fileSizeOfCache() -> Int {    let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first        // 取出文件夹下所有文件数组    let fileArr = FileManager.default.subpaths(atPath: cachePath!)    //快速枚举出所有文件名 计算文件大小    var size = 0    for file in fileArr! {        // 把文件名拼接到路径中        //let path = cachePath?.stringByAppendingString("/\(file)")        let path  = cachePath?.appending("/\(file)")        // 取出文件属性        let floder = try! FileManager.default.attributesOfItem(atPath: path!)        // 用元组取出文件大小属性        for (abc, bcd) in floder {            // 累加文件大小            if abc == FileAttributeKey.size {                size += (bcd as AnyObject).integerValue            }        }    }    let cacheSize = size / 1024 / 1024    //let str = "\(mm)"+"MB"    return cacheSize}

删除缓存

//清除缓存func clearCache() -> Void {    // 取出cache文件夹目录 缓存文件都在这个目录下    let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first    // 取出文件夹下所有文件数组    let fileArr = FileManager.default.subpaths(atPath: cachePath!)    // 遍历删除    for file in fileArr! {        let path = cachePath?.appending("/\(file)")        if FileManager.default.fileExists(atPath: path!) {            do {                try FileManager.default.removeItem(atPath: path!)            } catch {            }        }    }}

基于OC的缓存清理,运用SDWebImage框架

//计算单个文件大小+(float)fileSizeAtPath:(NSString *)path{    NSFileManager *fileManager=[NSFileManager defaultManager];    if([fileManager fileExistsAtPath:path]){        long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;        return size/1024.0/1024.0;    }    return 0;}//计算目录大小+(float)folderSizeAtPath:(NSString *)path{    NSFileManager *fileManager=[NSFileManager defaultManager];    float folderSize;    if ([fileManager fileExistsAtPath:path]) {        NSArray *childerFiles=[fileManager subpathsAtPath:path];        for (NSString *fileName in childerFiles) {            NSString *absolutePath=[path stringByAppendingPathComponent:fileName];            folderSize +=[CacheDelete fileSizeAtPath:absolutePath];        }        //SDWebImage框架自身计算缓存的实现        folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;        return folderSize;    }    return 0;}//清理缓存文件+(void)clearCache:(NSString *)path{    NSFileManager *fileManager=[NSFileManager defaultManager];    if ([fileManager fileExistsAtPath:path]) {        NSArray *childerFiles=[fileManager subpathsAtPath:path];        for (NSString *fileName in childerFiles) {            //如有需要,加入条件,过滤掉不想删除的文件            NSString *absolutePath=[path stringByAppendingPathComponent:fileName];            [fileManager removeItemAtPath:absolutePath error:nil];        }    }    [[SDImageCache sharedImageCache] cleanDisk];}
0 0
原创粉丝点击