Swift 文件缓存处理

创建CacheManager 管理文件缓存

1.0 提供readCacheSize()和cleanCache()方法分别为读取和清除文件缓存

readCacheSize()读取缓存

static func readCacheSize()->String {
        return String(format: "%.2f",forderSizeByDocumentPath(NSHomeDirectory()))
    }

2.1 forderSizeByDocumentPath()遍历所有子目录 并计算文件大小

 static func forderSizeByDocumentPath(forderPath: String) -> Double {
        let manage = NSFileManager.defaultManager()
        if !manage.fileExistsAtPath(forderPath) {
            print("文件不存在")
        }
        let subFilePath = manage.subpathsAtPath(forderPath)!
        var fileSize:Double = 0
        for path in subFilePath {
            let fileAbsoluePath = forderPath + "/" + path
            fileSize += retureFileSize(fileAbsoluePath)
        }
        return fileSize
    }

2.2 retureFileSize()计算单个文件大小

static func retureFileSize(path:String)-> Double{
        let manage = NSFileManager.defaultManager()
        var fileSize: Double = 0.0
        do{
            fileSize = try manage.attributesOfItemAtPath(path)["NSFileSize"] as! Double
        }catch{
            print("未知错误")
        }
        return fileSize/1024/1024
    }

cleanCache()清除缓存

static func cleanCache(competion:()->Void){
        CacheManager.deleteFolder(NSHomeDirectory()+"/Documents")
        CacheManager.deleteFolder(NSHomeDirectory()+"/Library")
        CacheManager.deleteFolder(NSHomeDirectory()+"/tmp")
        competion()
    }

3.1 deleteFolder()删除文件夹下的所有文件

static func deleteFolder(folderPath:String){
        let manage = NSFileManager.defaultManager()
        if !manage.fileExistsAtPath(folderPath) {
        }
        let childFilePath = manage.subpathsAtPath(folderPath)
        for path in childFilePath!{
            let fileAbsoluePath = folderPath+"/"+path
            CacheManager.deleteFile(fileAbsoluePath)
        }
    }

3.2 deleteFile()删除单个文件

static func deleteFile(path:String){
        let manage = NSFileManager.defaultManager()
        do{
            try manage.removeItemAtPath(path)
        }catch{
            
        }
    }

结语

项目链接:文件缓存

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 一、简介 Ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内...
    小程故事多阅读 44,491评论 9 59
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,993评论 0 11
  • 其实,很多的中文成语我们能够在英文里找到对应的版本。当你和老外交流时,如果能够脱口而出一些英文成语,相信你一定会得...
    学英语的那些事阅读 829评论 0 4
  • 界面中看得到的东西就是CALayer 我们见的最多的就是 UIView, 但是每个 UIView 中可以看得见的东...
    Laughingg阅读 351评论 0 0

友情链接更多精彩内容