// 得到缓存文件有多少兆
- (double)getCacheSize {
// 1bit, 即1个b就是1个1或1个0代表一个二进制位,bit是计算机存储的最小单位
// 1个字节(Byte),即1个B,就是8个bit, 1Byte = 8bit,一般用Byte表示计算机存储的基本单位
// 1个千字节(KB),即1024个Byte,即 1024个B,即2^10个字节
// 1个兆字节(M, MB, Megabytes),即1024个千字节,即2^10个千字节 1M = 2^10 KB = 2^20 B = 2^20*8 bit
// 1个吉字节(G, GB, GigaByte),即1024个兆字节,即2^10个兆字节
// 1个太字节(T, TB, TeraByte),即1024个吉字节,即2^10个G字节
// 1个拍字节(P, PB, PetaByte),即1024个T字节,即2^10个T字节
// 1个艾字节(E, EB, ExaByte),即1024个P字节,即2^10个P字节
// 1个泽它字节(Z, ZB, ZettaByte),即1024个E字节,即2^10个E字节
// 1个尧它字节(Y, YB, YaoitByte),即1024个Z字节,即2^10个Z字节
// 注意,换算方式也有以1000为单位的,所以一般的硬盘生产厂商采用1000为进制的换算,故有其报告的容量比硬盘标示的容量小的情况发生,没什么大惊小怪的
// 获取缓存
// SDWebImage自身下载图片有缓存
// 我们自己的缓存
SDImageCache *imageCache = [SDImageCachesharedImageCache];
NSUInteger fileSize = [imageCache getSize]; // 以字节为单位
NSLog(@"SD Cache: %lfM", fileSize/1024.0/1024.0);
// 本地下载的缓存(我们自己搞的缓存)
// 假设我们做了缓存,缓存地址为沙盒的Library/Caches/MyCaches注意,缓存路径随意,这里只是假设
NSString *myCachePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Library/Caches/MyCaches"];
NSFileManager *fm = [NSFileManagerdefaultManager];
// 获取指定文件信息
NSDictionary *fileInfo = [fm attributesOfItemAtPath:myCachePath error:nil];
NSLog(@"本地缓存字节:%llu", fileInfo.fileSize);
// SD图片缓存加上我们自己的缓存
fileSize += fileInfo.fileSize;
// 以兆为单位返回
return fileSize/1024.0/1024.0;
}
//文件或文件夹的计算
-(float)fileSizeAtPath:(NSString *)filePath
{
NSFileManager *manager=[ NSFileManager defaultManager];
if ([manager fileExistsAtPath:filePath]) {
NSDictionary *dict= [manager attributesOfItemAtPath:filePath error:nil];
return [dict fileSize ]/1024.0/1024.0;
} else {
return 0.0;
}
}
-(float)folderSizeAtPath:(NSString *)folderPath
{
NSFileManager *manager=[NSFileManager defaultManager];
if ([manager fileExistsAtPath:folderPath]) {
NSEnumerator *childFileEnumertor=[[manager subpathsAtPath:folderPath] objectEnumerator];
NSString *fileName;
float folderSize = 0;
while ((fileName=[childFileEnumertor nextObject])!=nil) {
NSString *fileAbsolutePath=[folderPath stringByAppendingPathComponent:fileName];
folderSize+=[self fileSizeAtPath:fileAbsolutePath];
}
return folderSize;
} else {
return 0.0;
}
}