计算app内部缓存文件大小

时间:2023-03-09 09:12:21
计算app内部缓存文件大小

#pragma mark - 计算单个文件大小

- (long long)fileSizeAtPath:(NSString*)filePath{

NSFileManager* manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath:filePath]){

return [[manager attributesOfItemAtPath:filePath error:nil]  fileSize];

}

return 0;

}

#pragma mark - 计算caches文件夹大小

- (float)folderSizeAtPath:(NSString*)folderPath{

NSFileManager *manager = [NSFileManager defaultManager];

if (![manager fileExistsAtPath:folderPath]) {

return 0;

}

NSEnumerator *childFiles = [[manager subpathsAtPath:folderPath] objectEnumerator];

NSString *fileName;

long long folderSize = 0;

while ((fileName = [childFiles nextObject]) != nil) {

NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];

folderSize += [self fileSizeAtPath:fileAbsolutePath];

}

self.cacheSize = folderSize / (1024.0 * 1024.0);

return self.cacheSize;

}

#pragma mark - 清除缓存的方法

+ (void)clearCache:(NSString *)path{

NSFileManager *manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath:path]) {

NSArray *childerFiles = [manager subpathsAtPath:path];

for (NSString *fileName in childerFiles) {

//如果有需要,加入条件,过滤掉不想删除的文件

NSString *absolutePath = [path stringByAppendingPathComponent:fileName];

[manager removeItemAtPath:absolutePath error:nil];

}

}

//这个是清除SDWebImage的缓存的,没有引用这个第三方类库的不用写

[[SDImageCache sharedImageCache] cleanDisk];

}