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
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM