计算沙盒中文件文件夹的大小
需求为统计应用所用缓存的大小,因为缓存文件都存储在沙盒里,所用要计算缓存的大小就要计算沙盒里我们存放的文件及文件夹的大小;
NSFileManager 类里提供了一个方法:
- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error
取dictionary的filesize可以拿到沙盒里某个路径文件的大小;
若要获取一个文件夹的大小,需要遍历文件夹的所有文件,获取每个文件的大小,累积起来;在NSFileManager里有个方法可以获取文件夹里的所有子文件相对路径:
- (NSArray *)subpathsAtPath:(NSString *)path;
如此便可以获取任意一个文件夹的大小;
//计算DesPath文件夹的缓存
NSArray* subFiles = [fm subpathsAtPath:DesPath];
NSLog(@"subpath = %@",subFiles);
for (NSString* fileName in subFiles) {
if ([fileName hasSuffix:@"png"]||[fileName hasSuffix:@"jpg"]) { //此处为获取图片文件的大小
NSDictionary* dic = [fm attributesOfItemAtPath:BOOKPATH([LoginPlugin share].userID,fileName) error:&error];
NSUInteger size = (error ? 0:[dic fileSize]);
fileSize += size;
}
}