1.获取缓存目录
//获取缓存文件路径-(NSString *)getCachesPath{ // 获取Caches目录路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachesDir = [paths objectAtIndex:0]; //指定文件名 // NSString *filePath = [cachesDir stringByAppendingPathComponent:@"com.nickcheng.NCMusicEngine"]; return cachesDir;}
2.计算缓存文件大小
//计算缓存文件的大小- (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ // //取得一个目录下得所有文件名// NSArray *files = [manager subpathsAtPath:filePath];// NSLog(@"files1111111%@ == %ld",files,files.count);// // // 从路径中获得完整的文件名(带后缀)// NSString *exe = [filePath lastPathComponent];// NSLog(@"exeexe ====%@",exe);// // // 获得文件名(不带后缀)// exe = [exe stringByDeletingPathExtension];// // // 获得文件名(不带后缀)// NSString *exestr = [[files objectAtIndex:1] stringByDeletingPathExtension];// NSLog(@"files2222222%@ ==== %@",[files objectAtIndex:1],exestr); return [[manager attributesOfItemAtPath:filePath error:nil] fileSize]; } return 0;}
清除缓存文件
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0]; NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath]; NSLog(@"files :%d",[files count]); for (NSString *p in files) { NSError *error; NSString *path = [cachPath stringByAppendingPathComponent:p]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] removeItemAtPath:path error:&error]; } } [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nilwaitUntilDone:YES];});-(void)clearCacheSuccess{ NSLog(@"清理成功");}
----------------------------------------------------------------------------------------------
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ^{ //获取缓存目录 NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0]; NSError *error; if ([[NSFileManager defaultManager] fileExistsAtPath:cachPath]) { //如果存在就删除 [[NSFileManager defaultManager] removeItemAtPath:cachPath error:&error]; } [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES]; });//计算缓存文件的大小,多少M- (NSString *) fileSizeAtPath:(NSString*)cachPath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:cachPath]){ unsigned long long length = [[manager attributesOfItemAtPath:cachPath error:nil] fileSize]; float ff = length/1024.0/1024.0; //换算成多少M NSString *size = [NSString stringWithFormat:@"%0.2fM",ff]; return size; } return 0;}//清理缓存后刷新-(void)clearCacheSuccess{ NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0]; NSString *size = [self fileSizeAtPath:cachPath]; _setting.cache = size; [self.tableView reloadData]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"清理成功" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alertView show];}