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{
            
        }
    }

结语

项目链接:文件缓存

你可能感兴趣的:(Swift 文件缓存处理)