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. R语言常用函数

    统计: mean:平均数sd:Standard Deviation 标准差var:方差median:中位数cov:协方差cor:相关系数 #环境ls/objectsrmhelp() library() ...

  2. vs2013在使用ReportView11时遇到的问题

    最近在做项目中用到2013中的ReportView11  在本机IIS中使用完全没问题  但是放到服务器上总是出问题 解决办法:(1)首先在自己机器上开发的时候  是不用引用  Microsoft.R ...

  3. 裸奔单片机GUI

    #include "main.h"#ifndef __STD_GUI_CONTEX__#define __STD_GUI_CONTEX__ #define CPSTRSIZE 20 ...

  4. Java笔记:关键字

    关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 ...

  5. win10下安装mysql5.7.16(解压缩版)

    注:本文涉及的是解压缩版的安装 安装教程 下载mysql 地址是:http://dev.mysql.com/downloads/mysql/ 解压缩下载的文件 修改ini文件(在解压缩后的mysql文 ...

  6. ftp org.apache.commons.net.ftp.FTPClient 判断文件是否存在

    String path = "/SJPT/ONPUT/HMD_TEST/" ; FtpTool.getFTPClient().changeWorkingDirectory(path ...

  7. C语言 关于内存动态分配问题

    全局变量:分配到 内存的静态区. 局部变量(非静态):分配到 内存的动态区.在存储区中称为栈(stack) 临时数据(C允许内存动态分配区域):存放在自由空间区,称为堆区(heap) 内存动态分配 得 ...

  8. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

  9. JS 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  10. Java 之 异常处理

    1.异常: a.问题(Throwable):异常(Exception).错误(Error)   异常(Exception):运行时异常(RuntimeException).编译时异常(Unhandle ...