美文网首页
计算目录大小 stat 和 fileManager

计算目录大小 stat 和 fileManager

作者: 一如初见丿 | 来源:发表于2017-07-06 13:47 被阅读34次

    // 计算目录大小    速度稍快一点

    func folderSizeAtPath(_ path:String) -> Float{      

      let fileManager = Foundation.FileManager.default;      

      var folderSize:Float = 0      

      if fileManager.fileExists(atPath: path){           

     let childerFiles = fileManager.subpaths(atPath: path)           

     for fileName in childerFiles!  {                

    let absolutePath = (path as NSString).appendingPathComponent(fileName);         

           var statadd = stat.init()          

          let cs = (absolutePath as NSString).utf8String             

       var buffer = UnsafeMutablePointer(mutating: cs)

    stat(buffer, &statadd)

    TLog.v(statadd.st_size)

    //folderSize += self.fileSizeAtPath(absolutePath)

    folderSize += Float(statadd.st_size) / 1024.0 / 1024.0

    }

    }

    return folderSize;

    }

    // 计算目录大小 速度一般

    func folderSizeAtPath(_ path:String) -> Float{

    let fileManager = Foundation.FileManager.default;

    var folderSize:Float = 0

    if fileManager.fileExists(atPath: path){

    let childerFiles = fileManager.subpaths(atPath: path)

    for fileName in childerFiles!  {

    let absolutePath = (path as NSString).appendingPathComponent(fileName);

    folderSize += self.fileSizeAtPath(absolutePath)

    }

    }

    return folderSize;

    }

    // 计算单个文件大小

    func fileSizeAtPath(_ path:String) -> Float{

    let fileManager = Foundation.FileManager.default;

    let dict:NSDictionary;

    if fileManager.fileExists(atPath: path) {

    do {

    dict = try fileManager.attributesOfItem(atPath: path) as NSDictionary;

    let size:UInt64 = dict.fileSize();

    return Float(size) / 1024.0 / 1024.0;

    }

    catch let error {

    TLog.v(error);

    }

    }

    return 0.0

    }

    文件内容很大的推荐做法

    https://github.com/Haneke/HanekeSwift/blob/master/Haneke/DiskCache.swift 

    相关文章

      网友评论

          本文标题:计算目录大小 stat 和 fileManager

          本文链接:https://www.haomeiwen.com/subject/yfyhhxtx.html