国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IOS沙盒與清除緩存

2019-11-14 18:01:38
字體:
來源:轉載
供稿:網友

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

 

作者:杰瑞教育
出處:http://www.survivalescaperooms.com/jerehedu/ 
版權聲明:本文版權歸杰瑞教育技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
技術咨詢:JRedu技術交流
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海丰县| 六枝特区| 青铜峡市| 克什克腾旗| 福鼎市| 理塘县| 泰安市| 旬阳县| 班戈县| 灵宝市| 庆安县| 五家渠市| 淮阳县| 斗六市| 灵山县| 应用必备| 新郑市| 垫江县| 灵台县| 海晏县| 平果县| 梨树县| 乌兰察布市| 五华县| 康平县| 保山市| 宁明县| 历史| 通许县| 内丘县| 攀枝花市| 富宁县| 石门县| 怀柔区| 寻乌县| 太谷县| 阳春市| 洛宁县| 克什克腾旗| 二连浩特市| 延庆县|