創(chuàng)建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{
}
}
結語
項目鏈接:文件緩存