iOS经典讲解之清除缓存文件

 

转载请标明出处:http://blog.csdn.net/loving_ios/article/details/49251321

清除缓存之前先要计算文件的大小:

 

[objc] view plain copy
  1. // 计算目录大小  
  2. - (CGFloat)folderSizeAtPath:(NSString *)path  
  3. {  
  4. // 利用NSFileManager实现对文件的管理</span>  
  5.   
  6.  NSFileManager *manager = [NSFileManager defaultManager]; CGFloat size = 0;   
  7. if ([manager fileExistsAtPath:path]) {  
  8. // 获取该目录下的文件,计算其大小  
  9.  NSArray *childrenFile = [manager subpathsAtPath:path];   
  10. for (NSString *fileName in childrenFile) {   
  11. NSString *absolutePath = [path stringByAppendingPathComponent:fileName];   
  12. size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;   
  13. }  
  14. // 将大小转化为M  
  15.  return size / 1024.0 / 1024.0;   
  16. }   
  17. return 0;  

 

 


[objc] view plain copy
  1. // 根据路径删除文件  
  2. - (void)cleanCaches:(NSString *)path  
  3. {  
  4.     // 利用NSFileManager实现对文件的管理  
  5.     NSFileManager *fileManager = [NSFileManager defaultManager];  
  6.     if ([fileManager fileExistsAtPath:path]) {  
  7.         // 获取该路径下面的文件名  
  8.         NSArray *childrenFiles = [fileManager subpathsAtPath:path];  
  9.         for (NSString *fileName in childrenFiles) {  
  10.             // 拼接路径  
  11.             NSString *absolutePath = [path stringByAppendingPathComponent:fileName];  
  12. // 将文件删除  
  13.             [fileManager removeItemAtPath:absolutePath error:nil];  
  14.         }  
  15.     }  
  16. }  

 

计算沙盒中文件的大小并删除沙盒中文件的例子:

 

[objc] view plain copy
  1. - (void)cleanCaches  
  2. {  
  3.     [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject];  
  4.     [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject];  
  5.     [self cleanCaches:NSTemporaryDirectory()];  
  6. }  
  7.   
  8. // 清除缓存  
  9.      
  10.             CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject]   
  11. + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];  
  12.               
  13.             NSString *message = size > 1 ? [NSString stringWithFormat:@"缓存%.2fM, 删除缓存", size] : [NSString stringWithFormat:@"缓存%.2fK, 删除缓存", size * 1024.0];  
  14.               
  15.             UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];  
  16.             UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {  
  17.                 [self cleanCaches];  
  18.             }];  
  19.             UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];  
  20.             [alert addAction:action];  
  21.             [alert addAction:cancel];  
  22.             [self showDetailViewController:alert sender:nil];  

posted @ 2017-07-14 14:37  ios4  阅读(415)  评论(0)    收藏  举报