計算沙盒中文件文件夾的大小
需求爲統計應用所用緩存的大小,因爲緩存文件都存儲在沙盒裏,所用要計算緩存的大小就要計算沙盒裏我們存放的文件及文件夾的大小;
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;
}
}