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";

});

});

}];

}

最新文章

  1. Yii源码阅读笔记(三十二)
  2. 《On Lisp》第四章第三节图4.6中的rmapcar函数中展现的apply陷阱
  3. 通过自定义Attribute及泛型extension封装数据验证过程
  4. ACM:统计难题 解题报告-字典树(Trie树)
  5. 如何查看Linux的系统是64位的还是32位的
  6. ogrinfo使用
  7. 使用Semaphore控制并发访问
  8. 2. ProGit-Git基础
  9. CrackMe_001
  10. CentOS 设置mysql的远程访问
  11. java学习(三) java 中 mongodb的各种操作
  12. Java数据持久层框架 MyBatis之API学习三(XML 映射配置文件)
  13. vue+webpack项目 url的问题了解
  14. 「雅礼集训 2017 Day5」矩阵
  15. WebView 讲义
  16. 洛谷P2822 组合数问题(题解)
  17. [USACO10DEC] Treasure Chest
  18. 智能POS承接口碑点餐FAQ
  19. 通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order
  20. spark2.3.0 配置spark sql 操作hive

热门文章

  1. Authorization in Cloud Applications using AD Groups
  2. RSA非对称性前端加密后端解密
  3. JavaBean的用法
  4. js加载完所有的图片,适合电子相册哦~~~~
  5. 卷积神经网络_(4)_caffe简介
  6. C# Mvc异常处理过滤器
  7. Android-LinearLayout(线性布局)
  8. IE8下String的Trim()方法失效的解决方案
  9. WPF 动画显示控件
  10. python笔记7:日期和时间