1 +(float)fileSizeForDir:(NSString*)path//计算文件夹下文件的总大小
 2
 3 {
 4
 5     NSFileManager *fileManager = [[NSFileManager alloc] init];
 6
 7     float size =0;
 8
 9     NSArray* array = [fileManager contentsOfDirectoryAtPath:path error:nil];
10
11     for(int i = 0; i<[array count]; i++)
12
13     {
14
15         NSString *fullPath = [path stringByAppendingPathComponent:[array objectAtIndex:i]];
16
17
18
19         BOOL isDir;
20
21         if ( !([fileManager fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) )
22
23         {
24
25             NSDictionary *fileAttributeDic=[fileManager attributesOfItemAtPath:fullPath error:nil];
26
27             size+= fileAttributeDic.fileSize/ 1024.0/1024.0;
28
29         }
30
31         else
32
33         {
34
35             [self fileSizeForDir:fullPath];
36
37         }
38
39     }
40
41     [fileManager release];
42
43     return size;
44
45 }

SandBox,沙盒机制,是一种安全体系。我们所开发的每一个应用程序在设备上会有一个对应的沙盒文件夹,当前的程序只能在自己的沙盒文件夹中读取文件,不能访问其他应用程序的沙盒。在项目中添加的所有非代码的资源,比如图片、声音、属性列表等都存在自己的沙盒中。此外,在程序运行中动态生成的或者从网络获取的数据,如果要存储,也都是存储到沙盒中。

沙盒中的默认文件夹

(1)Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录

(2)Library:存储程序的默认设置或其它状态信息;

里面又包含两个文件夹Caches和Preference;

Caches,存放缓存文件,iTunes不会备份此目录

(3)tmp:提供一个即时创建临时文件的地方

获取沙盒中的不同目录

  1 代码
  2
  3 //  JRSandBoxPath.h
  4 //  Fmdb
  5 //
  6 //  Created by jerei on 15-10-30.
  7 //  Copyright (c) 2015年 jerei. All rights reserved.
  8 //
  9 #import <Foundation/Foundation.h>
 10 @interface JRSandBoxPath: NSObject
 11 // 获取沙盒Document的文件目录
 12 + (NSString *)getDocumentDirectory;
 13 // 获取沙盒Library的文件目录
 14 + (NSString *)getLibraryDirectory;
 15 // 获取沙盒Library/Caches的文件目录
 16 + (NSString *)getCachesDirectory;
 17 // 获取沙盒Preference的文件目录
 18 + (NSString *)getPreferencePanesDirectory;
 19 // 获取沙盒tmp的文件目录
 20 + (NSString *)getTmpDirectory;
 21 @end
 22 //
 23 //  JRSandBoxPath.m
 24 //  Fmdb
 25 //
 26 //  Created by jerei on 15-10-30.
 27 //  Copyright (c) 2015年 jerei. All rights reserved.
 28 //
 29 #import " JRSandBoxPath.h"
 30 @implementation JRSandBoxPath
 31 #pragma mark - 获取沙盒Document的文件目录
 32 + (NSString *)getDocumentDirectory{
 33   return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 34 }
 35 #pragma mark - 获取沙盒Library的文件目录
 36 + (NSString *)getLibraryDirectory{
 37   return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
 38 }
 39 #pragma mark - 获取沙盒Library/Caches的文件目录
 40 + (NSString *)getCachesDirectory{
 41   return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
 42 }
 43 #pragma mark - 获取沙盒Preference的文件目录
 44 + (NSString *)getPreferencePanesDirectory{
 45   return [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject];
 46 }
 47 #pragma mark - 获取沙盒tmp的文件目录
 48 + (NSString *)getTmpDirectory{
 49   return
 50   NSTemporaryDirectory();
 51 }
 52 @end
 53 清除缓存
 54
 55 在开发的过程中,遇到有用的数据,会进行缓存,当该数据不需要时,可以清除。在这里整理了几个方法,统计问价的大小,清除指定文件,清除指定目录下的全部文件等。
 56
 57 代码
 58
 59 //  JRCleanCaches.h
 60 //  Fmdb
 61 //
 62 //  Created by jerei on 15-10-30.
 63 //  Copyright (c) 2015年 jerei. All rights reserved.
 64 //
 65 #import <Foundation/Foundation.h>
 66 @interface JRCleanCaches : NSObject
 67 // 根据路径返回目录或文件的大小
 68 + (double)sizeWithFilePath:(NSString *)path;
 69 // 得到指定目录下的所有文件
 70 + (NSArray *)getAllFileNames:(NSString *)dirPath;
 71 // 删除指定目录或文件
 72 + (BOOL)clearCachesWithFilePath:(NSString *)path;
 73 // 清空指定目录下文件
 74 + (BOOL)clearCachesFromDirectoryPath:(NSString *)dirPath;
 75 @end
 76 //
 77 //  JRCleanCaches.m
 78 //  Fmdb
 79 //
 80 //  Created by jerei on 15-10-30.
 81 //  Copyright (c) 2015年 jerei. All rights reserved.
 82 //
 83 #import "JRCleanCaches.h"
 84 @implementation JRCleanCaches
 85 #pragma mark - 根据路径返回目录或文件的大小
 86 + (double)sizeWithFilePath:(NSString *)path{
 87   // 1.获得文件夹管理者
 88   NSFileManager *manger = [NSFileManager defaultManager];
 89   // 2.检测路径的合理性
 90   BOOL dir = NO;
 91   BOOL exits = [manger fileExistsAtPath:path isDirectory:&dir];
 92   if (!exits) return 0;
 93   // 3.判断是否为文件夹
 94   if (dir) { // 文件夹, 遍历文件夹里面的所有文件
 95     // 这个方法能获得这个文件夹下面的所有子路径(直接\间接子路径)
 96     NSArray *subpaths = [manger subpathsAtPath:path];
 97     int totalSize = 0;
 98     for (NSString *subpath in subpaths) {
 99       NSString *fullsubpath = [path stringByAppendingPathComponent:subpath];
100       BOOL dir = NO;
101       [manger fileExistsAtPath:fullsubpath isDirectory:&dir];
102       if (!dir) { // 子路径是个文件
103         NSDictionary *attrs = [manger attributesOfItemAtPath:fullsubpath error:nil];
104         totalSize += [attrs[NSFileSize] intValue];
105       }
106     }
107     return totalSize / (1024 * 1024.0);
108   } else { // 文件
109     NSDictionary *attrs = [manger attributesOfItemAtPath:path error:nil];
110     return [attrs[NSFileSize] intValue] / (1024.0 * 1024.0);
111   }
112 }
113 #pragma mark - 得到指定目录下的所有文件
114 + (NSArray *)getAllFileNames:(NSString *)dirPath{
115   NSArray *files = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil];
116   return files;
117 }
118 #pragma mark - 删除指定目录或文件
119 + (BOOL)clearCachesWithFilePath:(NSString *)path{
120   NSFileManager *mgr = [NSFileManager defaultManager];
121   return [mgr removeItemAtPath:path error:nil];
122 }
123 #pragma mark - 清空指定目录下文件
124 + (BOOL)clearCachesFromDirectoryPath:(NSString *)dirPath{
125   //获得全部文件数组
126   NSArray *fileAry =  [JRCleanCaches getAllFileNames:dirPath];
127   //遍历数组
128   BOOL flag = NO;
129   for (NSString *fileName in fileAry) {
130     NSString *filePath = [dirPath stringByAppendingPathComponent:fileName];
131     flag = [JRCleanCaches clearCachesWithFilePath:filePath];
132     if (!flag)
133       break;
134   }
135   return flag;
136 }
137 @end

转载于:https://www.cnblogs.com/-yun/p/5090181.html

计算沙盒下文件夹内容大小 清空沙盒 文件 目录相关推荐

  1. php取指定文件夹图片大小,php获取某文件夹的大小

    // 获取文件夹大小 function getDirSize($dir) { $handle = opendir($dir); while (false!==($FolderOrFile = read ...

  2. FreeRTOS 文件夹内容简介

    FreeRTOS 文件夹内容简介 1.Source 文件夹 底下单位portable文件夹内的RVDS 文件夹,下面包含了各种处理器相关的文件夹. 接口文件都是跟硬件密切相关的,不同的硬件接口文件是不 ...

  3. 迅雷下载的资源,文件夹有大小,但是打开没有文件

    问题描述: 刚刚使用迅雷下载资源,下载成功后,在迅雷中右键打开文件夹没有响应,但是在迅雷里播放该资源文件建立的视频是可以播放的. 于是我切换到迅雷的下载文件夹中,发现有两个同名的文件夹,鼠标放上去都是 ...

  4. 如何查看windows某个目录下所有文件/文件夹的大小?

    如何查看windows某个目录下所有文件/文件夹的大小? TreeSize Free绿色汉化版是一款硬盘空间管理工具,用树形描述出来,能够显示文件大小和实际占用空间数及浪费的空间等信息,让你做出相应的 ...

  5. 递归实现显示目标文件夹的所有文件和文件夹,并计算目标文件夹的大小

    递归的一个典型应用就是遍历目标文件夹,把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算目标文件夹的总大小. 1: class Program 2: { 3: static void Mai ...

  6. 如何查看windows某个目录下所有文件/文件夹的大小?(TreeSize Free)

    如何查看windows某个目录下所有文件/文件夹的大小? TreeSize Free绿色汉化版是一款硬盘空间管理工具,用树形描述出来,能够显示文件大小和实际占用空间数及浪费的空间等信息,让你做出相应的 ...

  7. ubuntu 20.04 Linux下查看当前文件夹的大小

    问题描述 由于使用远程的 ssh 连接 ubuntu 20.04,所以不清楚如何查看 当前文件夹的大小 直接使用 df -h,只能查看 当前系统 磁盘的使用情况 需求 通过Linux shell 命令 ...

  8. Linux中使用du -d n 显示当前文件目录下文件夹的大小

    Linux中使用du -d n 显示当前文件目录下文件夹的大小 du -d n 其中 du 代表disk usage 硬盘使用 d 代表directory n 代表显示当前目录下文件夹的层数 root ...

  9. linux整个目录复制移动,Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹,个人常用收录...

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

最新文章

  1. 大触教你如何调节python内置函数
  2. 抽血检查超敏c高_答疑抽血检查甲状腺需要空腹吗?
  3. 从JVM的常见异常来看Tomcat中内存的设置
  4. springmvc使用spring自带日期类型验证
  5. 河北地质大学硕士专业介绍:计算机类
  6. 关于MySQL相关的查看显示信息:
  7. python替代_2.3.1 Python 实现的替代者
  8. wpf datepicker 选择时分秒_[Angular 组件库 NG-ZORRO 基础入门] - DatePicker
  9. java获取http文件大小_Java开发网 - 关于通过HTTPUrlConnection获取一个文件的大小?...
  10. 如何完全卸载OneDrive (Windows 10 64bit)
  11. 使用ppo强化学习算法预测双色球彩票程序
  12. 人脸识别项目的测试用例
  13. Android签名证书的生成
  14. vscode@局部替换文本/正则匹配分组替换(复杂删除修改替换)/目录检索_模糊匹配工作空间的目录
  15. ROS-Ardunio 点亮LED灯
  16. 襄阳市2022年高新技术企业申报奖励补贴以及认定条件汇总!
  17. Java实现银行卡号校验
  18. 记疫情无聊时对老师答题网站的一次渗透(1)
  19. 2010年F1大奖赛巴林揭幕战
  20. 2021年CS保研经历(五):北航计算机学院、武汉大学数学与统计学院、华科计算机科学与技术学院

热门文章

  1. 玩一下易语言 和字有多种读音,注定了它的重要性!!
  2. 前后端整合---请求
  3. Hbuilder启动夜神游模拟器失败,解决方案
  4. 为什么家里电信宽带不能用路由器了?要怎么解决?
  5. 如何区分常见 USB 接口类型
  6. 为什么有人说手机很少有白色的出现了?
  7. 你觉得跳广场舞的都是一群什么样的人?
  8. 你是怎么看待那些拿几千块钱炒股的人?
  9. 想赚钱?找自己的长板!
  10. 有人问李嘉诚的儿子李泽楷:“你父亲都教了你哪些成功赚钱的秘诀?”