• iOS之清除缓存


      1 //清除缓存按钮的点击事件
      2 
      3 - (void)putBufferBtnClicked:(UIButton *)btn{
      4 
      5      CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];
      6 
      7     
      8 
      9     NSString *message = size > 1 ? [NSString stringWithFormat:@"缓存%.2fM, 删除缓存", size] : [NSString stringWithFormat:@"缓存%.2fK, 删除缓存", size * 1024.0];
     10 
     11     
     12 
     13     UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];
     14 
     15     
     16 
     17     UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {                [self cleanCaches];            }];
     18 
     19     
     20 
     21     UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];
     22 
     23     [alert addAction:action];
     24 
     25     [alert addAction:cancel];
     26 
     27     [self showDetailViewController:alert sender:nil];
     28 
     29 }
     30 
     31  
     32 
     33 // 计算目录大小
     34 
     35 - (CGFloat)folderSizeAtPath:(NSString *)path{
     36 
     37     // 利用NSFileManager实现对文件的管理
     38 
     39     NSFileManager *manager = [NSFileManager defaultManager];
     40 
     41     CGFloat size = 0;
     42 
     43     if ([manager fileExistsAtPath:path]) {
     44 
     45         // 获取该目录下的文件,计算其大小
     46 
     47         NSArray *childrenFile = [manager subpathsAtPath:path];
     48 
     49         for (NSString *fileName in childrenFile) {
     50 
     51             NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
     52 
     53             size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;
     54 
     55         }
     56 
     57         // 将大小转化为M
     58 
     59         return size / 1024.0 / 1024.0;
     60 
     61     }
     62 
     63     return 0;
     64 
     65 }
     66 
     67 // 根据路径删除文件
     68 
     69 - (void)cleanCaches:(NSString *)path{
     70 
     71     // 利用NSFileManager实现对文件的管理
     72 
     73     NSFileManager *fileManager = [NSFileManager defaultManager];
     74 
     75     if ([fileManager fileExistsAtPath:path]) {
     76 
     77         // 获取该路径下面的文件名
     78 
     79         NSArray *childrenFiles = [fileManager subpathsAtPath:path];
     80 
     81         for (NSString *fileName in childrenFiles) {
     82 
     83             // 拼接路径
     84 
     85             NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
     86 
     87             // 将文件删除
     88 
     89             [fileManager removeItemAtPath:absolutePath error:nil];
     90 
     91         }
     92 
     93     }
     94 
     95 }
     96 
     97 //计算沙盒中文件的大小并删除沙盒中文件的例子:
     98 
     99 - (void)cleanCaches{
    100 
    101     [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject];
    102 
    103     [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject];
    104 
    105     [self cleanCaches:NSTemporaryDirectory()];
    106 
    107 }
    108 
    109  
  • 相关阅读:
    开学考试学生成绩管理Java
    动手动脑问题1
    数据库的链接错误分析
    ASP.NET自定义错误页面
    php declare
    HTTP运行期与页面执行模型
    分部类(Partial Classes)
    ASP.NET:小编浅谈泛型的使用
    Windows 2003 SP2下安装IIS无法复制文件
    php 的include require 区别
  • 原文地址:https://www.cnblogs.com/rglmuselily/p/5166178.html
Copyright © 2020-2023  润新知