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. DLL 生成与使用的全过程(2010-01-18 14:50:17)

    转载自 水滴的博客http://blog.sina.com.cn/spiritofwater   个人学习用 转载▼   分类: 技术 由dll导出的lib文件: 包含了每一个dll导出函数的符号名和 ...

  2. java 写文本换行

    import org.apache.commons.io.FileUtils; public static void main(String[] args) throws IOException { ...

  3. 设计模式--适配器模式Adapter(结构型)

    一.适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配.将一个类的接口转换成客户端期望的另外一个接口.其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重 ...

  4. VO对象和PO对象的区别

    VO,值对象(Value Object),PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成.从结构上看,它们并没有什么不同的地方.但从其意义和本质上来 ...

  5. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  6. Android-RelativeLayout(相对布局)、LinearLayout(线性布局)

    RelativeLayout(相对布局):按照各子元素之间的位置关系完成布局. 定位:android:layout_above="@id/xxx" --将控件置于给定ID控件之上 ...

  7. 假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢

    比如: select id, name from table1 where name = 'x' union all select id, name from table2 where name =  ...

  8. Mac OS X系统安装盘制作

    本文来记录一下制作苹果系统安装盘的步骤: 1. 准备一个空白的U盘或移动硬盘和去App Store下载好最新版本的系统,现在最新的是:macOS Sierra,下载后会默认打开安装进程,退出不管即可, ...

  9. Dapper入门学习

    今天了解并学习了下Dapper的用法,这里简单介绍下 1.安装Nuget Dapper Package包 2.代码 using (IDbConnection connection = new SqlC ...

  10. android include进来的组件 调用其子元素

    include标签包裹着一个可复用的布局: <include layout="@layout/footer_detail" android:id="@+id/foo ...