Samba協(xié)議總結(jié)記錄你弦!-清除緩存

首先

(稍后抽時(shí)間再總結(jié)禽作,先記錄)

Paste_Image.png

先了解下常見的NSFileManager文件方法:


獲取App沙盒根路徑:
NSString *homePath=NSHomeDirectory();

獲取Documents目錄路徑:
NSArray *Documentspaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0];

獲取Library目錄路徑
NSArray *Librarypaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *libraryDirectory = [paths objectAtIndex:0];

獲取Library/Caches目錄路徑
NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
 NSString *cachePath = [cacPath objectAtIndex:0];

獲取Tmp目錄路徑
NSString *tmpDirectory = NSTemporaryDirectory();


-(NSData *)contentsAtPath:path  //從一個(gè)文件讀取數(shù)據(jù)
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr  //向一個(gè)文件寫入數(shù)據(jù)
-(BOOL)removeItemAtPath:path error:err  //刪除一個(gè)文件
-(BOOL)moveItemAtPath:from toPath:to error:err  //重命名或者移動(dòng)一個(gè)文件(to不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err  //復(fù)制文件(to不能是已存在的)
-(BOOL)contentsEqualAtPath:path andPath:path2  //比較兩個(gè)文件的內(nèi)容
-(BOOL)fileExistAtPath:path  //測(cè)試文件是否存在
-(BOOL)isReadableFileAtPath:path  //測(cè)試文件是否存在旷偿,并且是否能執(zhí)行讀操作  
-(BOOL)isWriteableFileAtPath:path  //測(cè)試文件是否存在,并且是否能執(zhí)行寫操作  
-(NSDictionary *)attributesOfItemAtPath:path error:err  //獲取文件的屬性  
-(BOOL)setAttributesOfItemAtPath:attr error:err  //更改文件的屬性
使用目錄
-(NSString *)currentDirectoryPath  //獲取當(dāng)前目錄
-(BOOL)changeCurrentDirectoryPath:path  //更改當(dāng)前目錄
-(BOOL)copyItemAtPath:from toPath:to error:err  //復(fù)制目錄結(jié)構(gòu)(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attribute:attr  //創(chuàng)建一個(gè)新目錄
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag  //測(cè)試文件是不是目錄(flag中儲(chǔ)存結(jié)果YES/NO)
-(NSArray *)contentsOfDirectoryAtPath:path error:err  //列出目錄內(nèi)容
-(NSDirectoryEnumerator *)enumeratorAtPath:path  //枚舉目錄的內(nèi)容
-(BOOL)removeItemAtPath:path error:err  //刪除空目錄
-(BOOL)moveItemAtPath:from toPath:to error:err   //重命名或移動(dòng)一個(gè)目錄(to不能是已存在的)
常用路徑工具方法
+(NSString *)pathWithComponens:components  //根據(jù)components中的元素構(gòu)造有效路徑
-(NSArray *)pathComponents  //析構(gòu)路徑幢妄,獲得組成此路徑的各個(gè)部分
-(NSString *)lastPathComponent  //提取路徑的最后一個(gè)組成部分
-(NSString *)pathExtension  //從路徑的最后一個(gè)組成部分中提取其擴(kuò)展名
-(NSString *)stringByAppendingPathComponent:path  //將path添加到現(xiàn)有路徑的末尾
-(NSString *)stringByAppendingPathExtension:ext  //將指定的擴(kuò)展名添加到路徑的最后一個(gè)組成部分
-(NSString *)stringByDeletingLastPathComponent  //刪除路徑的最后一個(gè)組成部分
-(NSString *)stringByDeletingPathExtension  //從文件的最后一部分刪除擴(kuò)展名
-(NSString *)stringByExpandingTileInPath   //將路徑中代字符擴(kuò)展成用戶主目錄(~)或指定用戶的主目錄(~user)
-(NSString *)stringByresolvingSymlinksInPath  //嘗試解析路徑中的符號(hào)鏈接
-(NSString *)stringByStandardizingPath  //通過嘗試解析~蕉鸳、..(父目錄符號(hào))朽褪、.(當(dāng)前目錄符號(hào))和符號(hào)鏈接來標(biāo)準(zhǔn)化路徑
常用的路徑工具函數(shù)
NSString* NSUserName(void)  //返回當(dāng)前用戶的登錄名
NSString* NSFullUserName(void)  //返回當(dāng)前用戶的完整用戶名
NSString* NSHomeDirectory(void)  //返回當(dāng)前用戶主目錄的路徑
NSString* NSHomeDirectoryForUser(NSString* user)  //返回用戶user的主目錄
NSString* NSTemporaryDirectory(void)  //返回可用于創(chuàng)建臨時(shí)文件的路徑目錄
常用的IOS目錄
Documents(NSDocumentDirectory)  //用于寫入應(yīng)用相關(guān)數(shù)據(jù)文件的目錄缔赠,在ios中寫入這里的文件能夠與iTunes共享并訪問友题,存儲(chǔ)在這里的文件會(huì)自動(dòng)備份到云端
Library/Caches(NSCachesDirectory)  //用于寫入應(yīng)用支持文件的目錄,保存應(yīng)用程序再次啟動(dòng)需要的信息踢匣。iTunes不會(huì)對(duì)這個(gè)目錄的內(nèi)容進(jìn)行備份
tmp(use NSTemporaryDirectory())  //這個(gè)目錄用于存放臨時(shí)文件戈抄,只程序終止時(shí)需要移除這些文件,當(dāng)應(yīng)用程序不再需要這些臨時(shí)文件時(shí)输莺,應(yīng)該將其從這個(gè)目錄中刪除
Library/Preferences  //這個(gè)目錄包含應(yīng)用程序的偏好設(shè)置文件,使用 NSUserDefault類進(jìn)行偏好設(shè)置文件的創(chuàng)建嫂用、讀取和修改

清除應(yīng)用緩存

//
//  ViewController.m
//  testDemocach
//
//  Created by Sunniwell on 2017/3/14.
//  Copyright ? 2017年 ZPengs. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(100, 100, 100, 50);
    [btn setTitle:@"清除緩存" forState:UIControlStateNormal];
    btn.backgroundColor = [UIColor purpleColor];
    [btn addTarget:self action:@selector(putBufferBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    // Do any additional setup after loading the view, typically from a nib.
}
//清除緩存按鈕的點(diǎn)擊事件
- (void)putBufferBtnClicked:(UIButton *)btn{
    CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];
    
    NSString *message = size > 1 ? [NSString stringWithFormat:@"緩存%.0fM, 刪除緩存", size] : [NSString stringWithFormat:@"緩存%.0fK, 刪除緩存", size * 1024.0];
    
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];
    
    UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {
        [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject];
        [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject];
        [self cleanCaches:NSTemporaryDirectory()];
    }];
    
    UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];
    [alert addAction:action];
    [alert addAction:cancel];
    [self showDetailViewController:alert sender:nil];
}

// 計(jì)算目錄大小
- (CGFloat)folderSizeAtPath:(NSString *)path{
    // 利用NSFileManager實(shí)現(xiàn)對(duì)文件的管理
    NSFileManager *manager = [NSFileManager defaultManager];
    CGFloat size = 0;
    if ([manager fileExistsAtPath:path]) {
        // 獲取該目錄下的文件甘畅,計(jì)算其大小
        NSArray *childrenFile = [manager subpathsAtPath:path];
        for (NSString *fileName in childrenFile) {
            NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
            size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;
        }
        // 將大小轉(zhuǎn)化為M
        return size / 1024.0 / 1024.0;
    }
    return 0;
}
// 根據(jù)路徑刪除文件
- (void)cleanCaches:(NSString *)path{
    // 利用NSFileManager實(shí)現(xiàn)對(duì)文件的管理
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) {
        // 獲取該路徑下面的文件名
        NSArray *childrenFiles = [fileManager subpathsAtPath:path];
        for (NSString *fileName in childrenFiles) {
            // 拼接路徑
            NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
            // 將文件刪除
            [fileManager removeItemAtPath:absolutePath error:nil];
        }  
    }
}


@end



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疏唾,一起剝皮案震驚了整個(gè)濱河市亮航,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌准给,老刑警劉巖重抖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異畔规,居然都是意外死亡恨统,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門莫绣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悠鞍,“玉大人,你說我怎么就攤上這事掩宜∶春玻” “怎么了牺汤?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浩嫌。 經(jīng)常有香客問我檐迟,道長戴已,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任锅减,我火速辦了婚禮糖儡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怔匣。我一直安慰自己握联,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布金闽。 她就那樣靜靜地躺著,像睡著了一般剿骨。 火紅的嫁衣襯著肌膚如雪代芜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天浓利,我揣著相機(jī)與錄音挤庇,去河邊找鬼。 笑死贷掖,一個(gè)胖子當(dāng)著我的面吹牛嫡秕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苹威,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昆咽,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了牙甫?” 一聲冷哼從身側(cè)響起掷酗,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窟哺,沒想到半個(gè)月后泻轰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脏答,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年糕殉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亩鬼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殖告。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雳锋,靈堂內(nèi)的尸體忽然破棺而出黄绩,到底是詐尸還是另有隱情,我是刑警寧澤玷过,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布爽丹,位于F島的核電站筑煮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏粤蝎。R本人自食惡果不足惜真仲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初澎。 院中可真熱鬧秸应,春花似錦、人聲如沸碑宴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽延柠。三九已至祸挪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贞间,已是汗流浹背贿条。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留增热,地道東北人闪唆。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像钓葫,于是被迫代替她去往敵國和親悄蕾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理础浮,服務(wù)發(fā)現(xiàn)帆调,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫豆同、插件番刊、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,096評(píng)論 4 62
  • 1.git常用命令git 更新提交代碼命令 (develop 分支上) 2.chaddadd//git 更新提交代...
    中婭沙漏閱讀 200評(píng)論 0 1
  • 回憶起我兒子出生后最初幾個(gè)月鸭廷,有一種夢(mèng)境般的感覺枣抱。 每天夜間睡眠不到4小時(shí),有時(shí)候喂著喂著就睡著了辆床,醒來還不忘在小...
    張鋆Helen閱讀 927評(píng)論 0 0