• Swift 3.0统计缓存并清理-----(斯威夫特3.0 坑爹之获取文件大小)


    class func clearCache(finshed : (() -> Void)){

            let cachePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)

            let files = NSFileManager.defaultManager().subpathsAtPath(cachePath[0])

            

            let fileManager = NSFileManager.defaultManager()

            

            for tempStr in files!{

                

                let path = (cachePath.first! as NSString).stringByAppendingPathComponent(tempStr)

                // 注释掉的下面的方法无效

                

                echo("testExist:",NSFileManager.defaultManager().fileExistsAtPath(path))

                do {

                    try fileManager.removeItemAtPath(path)

                    if tempStr == files?.last{

                        SVProgressHUD.showImage(nil, status: "清理完成")

                        finshed()

                    }

                } catch let error as NSError{

                    if tempStr == files?.last{

                        SVProgressHUD.showImage(nil, status: "清理完成")

                        finshed()

                    }

                    echo("错误:",error.localizedDescription)

                }

            }

        }

        

        static var cacheSize: String{

            get{

                let basePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).first

                let fileManager = NSFileManager.defaultManager()

                

                func caculateCache() -> Float{

                    var total: Float = 0

                    if fileManager.fileExistsAtPath(basePath!){

                        let childrenPath = fileManager.subpathsAtPath(basePath!)

                        if childrenPath != nil{

                            for path in childrenPath!{

                                let childPath = basePath!.stringByAppendingString("/").stringByAppendingString(path)

                                do{

                                    let attr = try fileManager.attributesOfItemAtPath(childPath)

                                    let fileSize = attr["NSFileSize"] as! Float

                                    total += fileSize

                                    

                                }catch _{

                                    

                                }

                            }

                        }

                    }

                    

                    return total

                }

                

                

                let totalCache = caculateCache()

                return NSString(format: "%.2fMB", totalCache / 1024.0 / 1024.0 ) as String

            }

        }

    以上是Swift 2.3版本的方法,坑爹的来了,那就是Swift 3.0不认“NSFileSize”了。。。。

    2.0系列中 fileManager.attributesOfItemAtPath(childPath) 返回的是[String : AnyObject]。

    3.0系列中fileManager.attributesOfItemAtPath(childPath) 返回的是[FileAttributeKey : Any]

  • 相关阅读:
    IP应用加速技术详解:如何提升动静混合站点的访问速率?
    阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云
    BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
    洛谷P1457 城堡 The Castle
    洛谷P1461 海明码 Hamming Codes
    洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins
    洛谷P1459 三值的排序 Sorting a Three-Valued Sequence
    洛谷P1458 顺序的分数 Ordered Fractions
    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
    洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk
  • 原文地址:https://www.cnblogs.com/madarax/p/6203567.html
Copyright © 2020-2023  润新知