// 计算目录大小 速度稍快一点
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