ios swift 计算文件夹大小以及清除缓存文件
// // XCache.swift // UITablViewTest // // Created by Marcio on 2017/2/14. // Copyright © 2017年 Marcio. All rights reserved. // import UIKit class XCache: NSObject { /** * 读取缓存大小 */ static func returnCacheSize() -> String { return String(format: "%.2f",XCache.forderSizeAtPath(folderPath: NSHomeDirectory())) } /** * 清除缓存 自己决定清除缓存的位置 */ static func cleanCache(competion:()->Void) { XCache.deleteFolder(path: NSHomeDirectory() + "/Documents") XCache.deleteFolder(path: NSHomeDirectory() + "/Library") XCache.deleteFolder(path: NSHomeDirectory() + "/tmp") competion() } /** * 删除单个文件 */ static func deleteFile(path: String) { let manage = FileManager.default do { try manage.removeItem(atPath: path) } catch { } } static func deleteFolder(path: String) { let manage = FileManager.default if !manage.fileExists(atPath: path) { } let childFilePath = manage.subpaths(atPath: path) for path_1 in childFilePath! { let fileAbsoluePath = path+"/"+path_1 XCache.deleteFile(path: fileAbsoluePath) } } /** * 计算单个文件的大小 */ static func returnFileSize(path:String) -> Double { let manager = FileManager.default var fileSize:Double = 0 do { let attr = try manager.attributesOfItem(atPath: path) fileSize = Double(attr[FileAttributeKey.size] as! UInt64) let dict = attr as NSDictionary fileSize = Double(dict.fileSize()) } catch { dump(error) } return fileSize/1024/1024 } /** * 遍历所有子目录, 并计算文件大小 */ static func forderSizeAtPath(folderPath:String) -> Double { let manage = FileManager.default if !manage.fileExists(atPath: folderPath) { return 0 } let childFilePath = manage.subpaths(atPath: folderPath) var fileSize:Double = 0 for path in childFilePath! { let fileAbsoluePath = folderPath+"/"+path fileSize += XCache.returnFileSize(path: fileAbsoluePath) } return fileSize } }