IOS 沙盒与清除缓存
来源:互联网 发布:北京软件培训学校 编辑:程序博客网 时间:2024/05/29 04:11
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{returnNSTemporaryDirectory();}@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 0;// 3.判断是否为文件夹if (dir) { // 文件夹, 遍历文件夹里面的所有文件// 这个方法能获得这个文件夹下面的所有子路径(直接\间接子路径)NSArray *subpaths = [manger subpathsAtPath:path];int totalSize = 0;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 * 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
0 0
- IOS 沙盒与清除缓存
- iOS沙盒与清除缓存
- IOS 沙盒与清除缓存
- iOS沙盒清除缓存
- IOS 显示与清除缓存
- iOS 获取缓存大小与清除缓存
- ios 手动清除本地沙盒中的缓存数据
- ios webview清除缓存。
- ios webview清除缓存
- iOS开发清除缓存
- ios webview清除缓存
- ios webview清除缓存
- ios webview清除缓存
- IOS清除缓存
- iOS清除缓存
- 清除ios的缓存
- iOS 清除缓存
- iOS 清除缓存
- ios 开发 navigationbar上私有属性的获取
- 异常问题解决方案经验总结
- android显示gif图
- 模拟实现进度条
- java中常用的算法,android中常用的算法(冒泡排序算法、希尔排序算法等)
- IOS 沙盒与清除缓存
- UVA 442 Matrix Chain Multiplication (矩阵链乘)
- FunDA(11)- 数据库操作的并行运算:Parallel data processing
- c#上传图片
- C/C++之mutable关键字详解
- linux kernel内存映射实例分析
- AMQP-cpp 开发
- liferay性能测试(LoadRunner)
- C++网络编程基础代码(服务器)---基于TCP协议