清理文件緩存
類型方法 (Type Methods) + 默認參數值(Default Parameter Values)
下面默認緩存目錄為 /Library/Caches ,大家可以根據自己的緩存目錄進行更改
XCache
使用:
//讀取緩存
XCache.readCacheSize() //這里默認/Library/Caches目錄
XCache.readCacheSize("/Documents") //讀取指定的目錄
//清除緩存
XCache.cleanCache() //默認清除/Library/Caches目錄
XCache.cleanCache("/Documents") //清除指定的目錄
XCache.cleanCache("/Documents") { //帶回調的清除
print("清除的回調")
}
XCache.swift
import UIKit
struct XCache {
// MARK: - 讀取緩存大小
static func readCacheSize(filePath: String = "/Library/Caches") -> String {
let cacheFilePath = NSHomeDirectory() + filePath
let cacheSize = forderSizeAtPath(cacheFilePath)/1024/1024
return String(format: "%.2f", cacheSize) + "MB"
}
//遍歷所有目錄及子目錄
static func forderSizeAtPath(folderPath: String) -> Double {
let manage = NSFileManager.defaultManager()
guard manage.fileExistsAtPath(folderPath) else { return 0 }
let childFilePath = manage.subpathsAtPath(folderPath)!
var fileSize:Double = 0
for path in childFilePath {
let fileAbsoluePath = folderPath + "/" + path
fileSize += returnFileSzie(fileAbsoluePath)
}
return fileSize
}
//處理每個文件路徑下文件 —> 大小
static func returnFileSzie(path: String) -> Double {
let manage = NSFileManager.defaultManager()
var fileSize:Double = 0
do {
fileSize = try manage.attributesOfItemAtPath(path)["NSFileSize"] as! Double
} catch {
print(error)
}
return fileSize
}
//MARK: - 清除緩存
static func cleanCache(filePath: String = "/Library/Caches", competion:() -> Void = { print("清除完畢") } ) {
deleteFolder(NSHomeDirectory() + filePath)
competion()
}
//刪除文件夾的所有文件
static func deleteFolder(folderPath: String) {
let manage = NSFileManager.defaultManager()
guard manage.fileExistsAtPath(folderPath) else { return }
let childFilePath = manage.subpathsAtPath(folderPath)
for path in childFilePath! {
let fileAbsoluePath = folderPath + "/" + path
deleteFile(fileAbsoluePath)
}
}
//刪除單個文件
static func deleteFile(path: String) {
let manage = NSFileManager.defaultManager()
do {
try manage.removeItemAtPath(path)
} catch {
print(error)
}
}
}