IOS 沙盒与清除缓存
SandBox,沙盒机制,是一种安全体系。我们所开发的每一个应用程序在设备上会有一个对应的沙盒文件夹,当前的程序只能在自己的沙盒文件夹中读取文件,不能访问其他应用程序的沙盒。在项目中添加的所有非代码的资源,比如图片、声音、属性列表等都存在自己的沙盒中。此外,在程序运行中动态生成的或者从网络获取的数据,如果要存储,也都是存储到沙盒中。
沙盒中的默认文件夹
(1)Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
(2)Library:存储程序的默认设置或其它状态信息;
里面又包含两个文件夹Caches和Preference;
Caches,存放缓存文件,iTunes不会备份此目录
(3)tmp:提供一个即时创建临时文件的地方
获取沙盒中的不同目录
代码
// JRSandBoxPath.h
// Fmdb
//
// Created by jerei on 15-10-30.
// Copyright (c) 2015年 jerei. All rights reserved.
// #import <Foundation/Foundation.h> @interface JRSandBoxPath: NSObject // 获取沙盒Document的文件目录
+ (NSString *)getDocumentDirectory; // 获取沙盒Library的文件目录
+ (NSString *)getLibraryDirectory; // 获取沙盒Library/Caches的文件目录
+ (NSString *)getCachesDirectory; // 获取沙盒Preference的文件目录
+ (NSString *)getPreferencePanesDirectory; // 获取沙盒tmp的文件目录
+ (NSString *)getTmpDirectory;
@end //
// JRSandBoxPath.m
// Fmdb
//
// Created by jerei on 15-10-30.
// Copyright (c) 2015年 jerei. All rights reserved.
// #import " JRSandBoxPath.h" @implementation JRSandBoxPath #pragma mark - 获取沙盒Document的文件目录
+ (NSString *)getDocumentDirectory{
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
} #pragma mark - 获取沙盒Library的文件目录
+ (NSString *)getLibraryDirectory{
return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
} #pragma mark - 获取沙盒Library/Caches的文件目录
+ (NSString *)getCachesDirectory{
return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
} #pragma mark - 获取沙盒Preference的文件目录
+ (NSString *)getPreferencePanesDirectory{
return [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject];
} #pragma mark - 获取沙盒tmp的文件目录
+ (NSString *)getTmpDirectory{
return
NSTemporaryDirectory();
} @end
清除缓存
在开发的过程中,遇到有用的数据,会进行缓存,当该数据不需要时,可以清除。在这里整理了几个方法,统计问价的大小,清除指定文件,清除指定目录下的全部文件等。
代码
// JRCleanCaches.h
// Fmdb
//
// Created by jerei on 15-10-30.
// Copyright (c) 2015年 jerei. All rights reserved.
// #import <Foundation/Foundation.h> @interface JRCleanCaches : NSObject // 根据路径返回目录或文件的大小
+ (double)sizeWithFilePath:(NSString *)path; // 得到指定目录下的所有文件
+ (NSArray *)getAllFileNames:(NSString *)dirPath; // 删除指定目录或文件
+ (BOOL)clearCachesWithFilePath:(NSString *)path; // 清空指定目录下文件
+ (BOOL)clearCachesFromDirectoryPath:(NSString *)dirPath; @end //
// JRCleanCaches.m
// Fmdb
//
// Created by jerei on 15-10-30.
// Copyright (c) 2015年 jerei. All rights reserved.
// #import "JRCleanCaches.h" @implementation JRCleanCaches #pragma mark - 根据路径返回目录或文件的大小
+ (double)sizeWithFilePath:(NSString *)path{
// 1.获得文件夹管理者
NSFileManager *manger = [NSFileManager defaultManager]; // 2.检测路径的合理性
BOOL dir = NO;
BOOL exits = [manger fileExistsAtPath:path isDirectory:&dir];
if (!exits) return ; // 3.判断是否为文件夹
if (dir) { // 文件夹, 遍历文件夹里面的所有文件
// 这个方法能获得这个文件夹下面的所有子路径(直接\间接子路径)
NSArray *subpaths = [manger subpathsAtPath:path];
int totalSize = ;
for (NSString *subpath in subpaths) {
NSString *fullsubpath = [path stringByAppendingPathComponent:subpath]; BOOL dir = NO;
[manger fileExistsAtPath:fullsubpath isDirectory:&dir];
if (!dir) { // 子路径是个文件
NSDictionary *attrs = [manger attributesOfItemAtPath:fullsubpath error:nil];
totalSize += [attrs[NSFileSize] intValue];
}
}
return totalSize / ( * 1024.0);
} else { // 文件
NSDictionary *attrs = [manger attributesOfItemAtPath:path error:nil];
return [attrs[NSFileSize] intValue] / (1024.0 * 1024.0);
}
} #pragma mark - 得到指定目录下的所有文件
+ (NSArray *)getAllFileNames:(NSString *)dirPath{
NSArray *files = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil];
return files;
} #pragma mark - 删除指定目录或文件
+ (BOOL)clearCachesWithFilePath:(NSString *)path{
NSFileManager *mgr = [NSFileManager defaultManager];
return [mgr removeItemAtPath:path error:nil];
} #pragma mark - 清空指定目录下文件
+ (BOOL)clearCachesFromDirectoryPath:(NSString *)dirPath{ //获得全部文件数组
NSArray *fileAry = [JRCleanCaches getAllFileNames:dirPath];
//遍历数组
BOOL flag = NO;
for (NSString *fileName in fileAry) {
NSString *filePath = [dirPath stringByAppendingPathComponent:fileName];
flag = [JRCleanCaches clearCachesWithFilePath:filePath]; if (!flag)
break;
} return flag;
} @end
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

IOS 沙盒与清除缓存的更多相关文章
- iOS沙盒(sandbox)
iOS沙盒 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,默认下iOS应用只能访问自己的沙盒 extenaion是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补 ...
- iOS沙盒目录结构解析
iOS沙盒目录结构解析 原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713 出于安全考虑,iOS系统的沙盒机制规定每个应 ...
- IOS沙盒Files目录说明和常用操作
Ios沙盒目录清单 1 Documents 用于存储用户生成的文件.其他数据及其他程序不能重新创建的文件,默认文件通过iCloud自动备份.如果不需要iCloud备份,则设置标记 NSURLIsExc ...
- IOS沙盒机制
一,ios应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒 1,每个应用程序都有自己的存储空间 2,应用程序不能翻过自己的围墙去访问别的存储空间的内容. 3,应用 ...
- iOS - 沙盒与目录
NSFileManager NSBundle Class Cluster 采用Tagged Pointer的字符串 NSPathStore iOS证书ipa包重签名探究 url 结构 1. iOS 沙 ...
- IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)
1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...
- iOS 阶段学习第25天笔记(iOS沙盒机制介绍)
iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...
- iOS沙盒机制介绍,Block 的介绍
一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...
- ios沙盒路径
http://www.cnblogs.com/ios-wmm/p/3299695.html iOS沙盒路径的查看和使用 NSString *path = NSHomeDirectory();//主目录 ...
随机推荐
- Codeforces.959E.Mahmoud and Ehab and the xor-MST(思路)
题目链接 \(Description\) 有一张\(n\)个点的完全图,从\(0\)到\(n-1\)标号,每两点\(i,j\)间的边权为\(i\oplus j\).求其最小生成树边权之和. \(Sol ...
- Codeforces Round #372 (Div. 1) A. Plus and Square Root 数学题
A. Plus and Square Root 题目连接: http://codeforces.com/contest/715/problem/A Description ZS the Coder i ...
- gitblit无法安装windows服务或者启动服务失败:Failed creating java
gitblit解压后,命令行运行installService.cmd之前,需要修改里面的参数,将ARCH修改x86,默认是amd64,我的机器是windows 10 Pro 64位版本,jdk也都是6 ...
- quartz 2.0 与1.0功能对比
日常开发来说,相对于1.0版,2.0版在使用上有以下几点需要注意的变化 变化一 比1.0多引用了C5.dll C5.dll 一个C#和其他CLI语言的泛型集合类..Net2.0及以上才可以使用.简介地 ...
- iOS中使用RegexKitLite来试用正则表达式
转:http://blog.csdn.net/nullcn/article/details/6338592 准备工作,下载RegexKitLite 软件包,解压后有2个文件,需要加载到project中 ...
- 从零开始,运行一个android例子程序
电脑上连个eclipse都没装,怎么玩android?一穷二白的你, 下面就跟随我,从零开始,一步一步操作,运行我们的第一个android应用程序.我一直相信,学习开发,只有在调试过程中学的是最快的. ...
- WordPress基础:get_page_link获取页面地址
函数:get_page_link(页面id编号) 作用:获取指定页面的链接地址 用法: $link = get_page_link(2); 输出为:xxx/?page_id=2 如在循环里则不用填写i ...
- Matlab Codes and Datasets for Feature Learning
Matlab Codes and Datasets for Feature Learning 浙江大学CAiDeng提供的Matlab特征学习Code.
- poj Kaka's Matrix Travels
Kaka's Matrix Travels 题目: 给出一个矩阵.求仅仅能向下或者向右的情况下能得到的最大和.一般的是指遍历一次,而这个是能够反复走K次.每经过一次后就把该点设为0.求最大和. 算法: ...
- 简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码
简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码 利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查 ...