IOS 基本文件操作實(shí)例詳解
IOS 基本文件操作實(shí)例詳解
在iOS的App沙盒中,Documents和Library/Preferences都會(huì)被備份到iCloud,因此只適合放置一些記錄文件,例如plist、數(shù)據(jù)庫文件。緩存一般放置到Library/Caches,tmp文件夾會(huì)被系統(tǒng)隨機(jī)清除,不適宜防止數(shù)據(jù)。
【圖片緩存的清除】
在使用SDWebImage時(shí),圖片被大量的緩存,有時(shí)需要獲取緩存的大小以及清除緩存。
要獲取緩存大小,使用SDImageCache單例的getSize方法拿到byte為單位的緩存大小,注意計(jì)算時(shí)按1K=1000計(jì)算。
拿到M為單位的文件大小的方法,如下:
double size = [[SDImageCache sharedImageCache] getSize] / 1000.0 / 1000.0;
要清除緩存,調(diào)用clearDisk方法,分為有回調(diào)和無回調(diào)。
因?yàn)榍宄彺娴臅r(shí)間可能會(huì)比較長(zhǎng),因此應(yīng)該用指示器予以指示。
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{ // 清除完畢的處理。 }];
【文件夾大小計(jì)算】
使用NSFileManager可以拿到文件的屬性,如果文件是目錄,拿到的FileSize是沒有意義的,因?yàn)槟夸浀拇笮⌒枰f歸計(jì)算,不宜作為一個(gè)靜態(tài)屬性。因此只有文件的FileSize屬性才是文件的大小。
為了計(jì)算文件夾的大小,應(yīng)該遞歸內(nèi)部所有文件,還好蘋果官方集成了遞歸方法,通過遞歸可以拿到所有的目錄和所有的文件,只要利用FileManager的方法判斷是否是文件,如果是文件則拿到FileSize屬性累加,就能計(jì)算出文件夾的大小,如下:
需要注意的是遍歷出來的文件是以Caches為根目錄的,因此獲取屬性時(shí)應(yīng)該拼接出全路徑。
- (void)fileSize{ NSFileManager *manager = [NSFileManager defaultManager]; NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSArray *files = [manager subpathsOfDirectoryAtPath:cachePath error:nil]; // 遞歸所有子路徑 NSInteger totalSize = 0; for (NSString *filePath in files) { NSString *path = [cachePath stringByAppendingPathComponent:filePath]; // 判斷是否為文件 BOOL isDir = NO; [manager fileExistsAtPath:path isDirectory:&isDir]; if (!isDir) { NSDictionary *attrs = [manager attributesOfItemAtPath:path error:nil]; totalSize += [attrs[NSFileSize] integerValue]; } } NSLog(@"%d",totalSize); }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
iOS界面布局簡(jiǎn)化UIStackView使用詳解
這篇文章主要為大家介紹了iOS界面布局簡(jiǎn)化UIStackView使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09iOS應(yīng)用進(jìn)入后臺(tái)后計(jì)時(shí)器和位置更新停止問題的解決辦法
這篇文章主要介紹了iOS應(yīng)用進(jìn)入后臺(tái)后計(jì)時(shí)器和位置更新停止問題的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03IOS中UIWebView加載Loading的實(shí)現(xiàn)方法
最近有朋友問我類似微信語音播放的喇叭動(dòng)畫和界面圖片加載loading界面是怎樣實(shí)現(xiàn)的,是不是就是一個(gè)gif圖片呢!我的回答當(dāng)然是否定了,當(dāng)然不排除也有人用gif圖片?。?/div> 2015-05-05IOS實(shí)現(xiàn)上滑隱藏NvaigtionBar而下拉則顯示效果
這篇文章給大家介紹了如何實(shí)現(xiàn)APP上滑時(shí)隱藏navigationBar而下拉則又會(huì)顯示,雖然也是隱藏但是效果和其他完全不一樣,因?yàn)橐郧皼]做過所以試著去實(shí)現(xiàn)一下,現(xiàn)在分享給大家,有需要的可以參考借鑒。2016-09-09iOS利用MJRefresh實(shí)現(xiàn)自定義刷新動(dòng)畫效果
本文主要介紹iOS 利用MJRefresh實(shí)現(xiàn)自定義動(dòng)畫的上拉刷新下拉加載效果,要想實(shí)現(xiàn)此功能,首先得有一套load的圖片數(shù)組。接下來通過本文給大家詳解介紹實(shí)現(xiàn)過程2017-02-02IOS 使用NSAssert()和NSParameterAssert調(diào)試程序
這篇文章主要介紹了IOS 使用NSAssert()和NSParameterAssert調(diào)試程序的相關(guān)資料,需要的朋友可以參考下2017-06-06最新評(píng)論