iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。它包含三个文件夹:

Documents: 苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录,如用户信息等永久性文件;

Library: 它包含两个文件夹 caches 和 preferences 
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,如图片、视频缓存; 
Library/Preferences:包含应用程序的偏好设置文件;

Temp:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。 
下面是获取沙盒路径的方法:

1、//沙盒的根目录 NSString *homePath = NSHomeDirectory();

2、//沙盒Documents路径 NSString *docuPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

3、//沙盒中Library路径 NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

4、//沙盒中Library/Caches路径 NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

5、//沙盒中Temp路径 NSString *tempPath = NSTemporaryDirectory();

//计算文件夹的大小

-(float)calculateFolderSizeWithPath:(NSString *)path{

NSFileManager *fileManager=[NSFileManager defaultManager];

NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

cachePath=[cachePath stringByAppendingPathComponent:path];

CGFloat folderSize=0;

if ([fileManager fileExistsAtPath:cachePath])

{

NSArray *childFiles=[fileManager subpathsAtPath:cachePath];

for (NSString *fileName in childFiles)

{

NSString *fileAbsolutePath=[cachePath stringByAppendingPathComponent:fileName];

CGFloat size=[self calculateFileSizeWithPath:fileAbsolutePath];

folderSize += size;

NSLog(@"fileAbsolutePath=%@",fileAbsolutePath);

}

//SDWebImage框架自身计算缓存

folderSize+=[[SDImageCache sharedImageCache] getSize];

return folderSize/1024.0/1024.0;

}

return 0;

}

//计算单个文件大小

-(CGFloat)calculateFileSizeWithPath:(NSString *)path{

NSFileManager *fileManager=[NSFileManager defaultManager];

if([fileManager fileExistsAtPath:path]){

CGFloat size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;

return size;

}

return 0;

}

- (void)clearCacheClick

{

NSArray *arr_Path = @[@"/Media",@"/Music",@"/Voice"];

[[UIView alloc]showHUDWithTitle:@"正在清除缓存···" WithState:1];

//一是清除SDWebImage的缓存,二是清除自定义文件缓存

[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{

dispatch_async(dispatch_get_global_queue(0, 0), ^{

NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

for (NSString *pathName in arr_Path) {

NSString *fileAbsolutePath = [documentDir stringByAppendingPathComponent:pathName];

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:fileAbsolutePath]) {

[fileManager removeItemAtPath:fileAbsolutePath error:nil];

[fileManager createDirectoryAtPath:fileAbsolutePath withIntermediateDirectories:YES attributes:nil error:nil];

}

}

dispatch_async(dispatch_get_main_queue(), ^{

[[UIView alloc]showAndHideHUDWithTitle:@"清除完成" WithState:0];

// 设置文字

self.lable_Cache.text = @"0.00 MB";

});

});

}];

}

iOS 清除缓存的更多相关文章

  1. iOS清除缓存功能开发

    在APP开发中,大量的图片或消息占用系统内存,造成一堆垃圾信息,所以开发清除缓存功能就显得必不可少了. 代码段1:获取文件的大小 - (long long) fileSizeAtPath:(NSStr ...

  2. iOS开发 - Swift实现清除缓存功能

    前言: 开发移动应用时,请求网络资源是再常见不过的功能.如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见. 但是时间长了,离线缓存会占用大量的手 ...

  3. iOS之清除缓存

    //清除缓存按钮的点击事件 - (void)putBufferBtnClicked:(UIButton *)btn{ CGFloat size = [self folderSizeAtPath:NSS ...

  4. iOS UIWebView清除缓存

    UIWebView清除Cookie: //清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieSto ...

  5. iOS开发获取缓存文件的大小并清除缓存

    移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...

  6. IOS 沙盒与清除缓存

    SandBox,沙盒机制,是一种安全体系.我们所开发的每一个应用程序在设备上会有一个对应的沙盒文件夹,当前的程序只能在自己的沙盒文件夹中读取文件,不能访问其他应用程序的沙盒.在项目中添加的所有非代码的 ...

  7. iOS中清除缓存的方法 以及SDWebimage自带的清除缓存方法

    1  SDWebimage中 (1)  计算缓存的大小 单位 : (MB) CGFloat size = [[SDImageCache sharedImageCache] getSize] / 102 ...

  8. iOS开发 -李洪强-清除缓存

    // //  SetViewController.m //  dfhx // //  Created by dfhx_iMac_001 on 16/4/5. //  Copyright © 2016年 ...

  9. ios获取缓存文件的大小并清除缓存

    移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...

随机推荐

  1. poj 3614

    http://poj.org/problem?id=3614 题意:有n头奶牛想要晒太阳,但他们每个人对太阳都有不同的耐受程度,也就是说,太阳不能太大也不能太小,现在有一种防晒霜,涂抹这个防晒霜可以把 ...

  2. Linux下编译安装MariaDB

    MariaDB是MySQL的一个开源分支,主要是社区在维护,并且完全兼容MySQL,并且可以很方便的称为MySQL的替代,MariaDB的诞生正是出自MySQL创始人Michael Widenius之 ...

  3. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  4. Jquery操作select

    <select id="Select1"> <option value="one">一</option> <optio ...

  5. js学习进阶中-bind()方法

    有次面试遇到的,也是没说清楚具体的作用,感觉自己现在还是没有深刻的理解! bind():绑定事件类型和处理函数到DOM element(父元素上) live():绑定事件到根节点上,(document ...

  6. Java数据类型和MySql数据类型对应表

  7. js变量及其作用域(附例子及讲解)

    Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量   工具/原料   Ch ...

  8. 51nod1185(wythoff+高精度)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 题意:中文题诶- 思路:wythoff模板题,和51n ...

  9. PHP反射API

    近期忙着写项目,没有学习什么特别新的东西,所以好长时间没有更新博客.我们的项目用的是lumen,是基于laravel的一个轻量级框架,我看到里面用到了一些反射API机制来帮助动态加载需要的类.判断方法 ...

  10. PHP RSA参数签名

    为了防止在支付通信过程中的参数数据被篡改或者伪造,采用RSA进行数据签名和验证签名. RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. ...