IOS 基本文件操作實(shí)例詳解
IOS 基本文件操作實(shí)例詳解
在iOS的App沙盒中,Documents和Library/Preferences都會被備份到iCloud,因此只適合放置一些記錄文件,例如plist、數(shù)據(jù)庫文件。緩存一般放置到Library/Caches,tmp文件夾會被系統(tǒng)隨機(jī)清除,不適宜防止數(shù)據(jù)。
【圖片緩存的清除】
在使用SDWebImage時,圖片被大量的緩存,有時需要獲取緩存的大小以及清除緩存。
要獲取緩存大小,使用SDImageCache單例的getSize方法拿到byte為單位的緩存大小,注意計(jì)算時按1K=1000計(jì)算。
拿到M為單位的文件大小的方法,如下:
double size = [[SDImageCache sharedImageCache] getSize] / 1000.0 / 1000.0;
要清除緩存,調(diào)用clearDisk方法,分為有回調(diào)和無回調(diào)。
因?yàn)榍宄彺娴臅r間可能會比較長,因此應(yīng)該用指示器予以指示。
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
// 清除完畢的處理。
}];
【文件夾大小計(jì)算】
使用NSFileManager可以拿到文件的屬性,如果文件是目錄,拿到的FileSize是沒有意義的,因?yàn)槟夸浀拇笮⌒枰f歸計(jì)算,不宜作為一個靜態(tài)屬性。因此只有文件的FileSize屬性才是文件的大小。
為了計(jì)算文件夾的大小,應(yīng)該遞歸內(nèi)部所有文件,還好蘋果官方集成了遞歸方法,通過遞歸可以拿到所有的目錄和所有的文件,只要利用FileManager的方法判斷是否是文件,如果是文件則拿到FileSize屬性累加,就能計(jì)算出文件夾的大小,如下:
需要注意的是遍歷出來的文件是以Caches為根目錄的,因此獲取屬性時應(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);
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
IOS UI學(xué)習(xí)教程之區(qū)分NSBundle和NSURL(讀取文件、寫入文件)
這篇文章主要為大家詳細(xì)介紹了IOS UI學(xué)習(xí)教程之區(qū)分NSBundle和NSURL,如何讀取、寫入文件,感興趣的小伙伴們可以參考一下2016-03-03
iOS 11 使用兩種方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字
這篇文章主要介紹了iOS 11 使用方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字,需要的朋友可以參考下2018-05-05
Flutter Widgets粘合劑CustomScrollView NestedScrollVie
這篇文章主要為大家介紹了Flutter Widgets粘合劑CustomScrollView NestedScrollView滾動控件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
詳細(xì)整理iOS中UITableView的性能優(yōu)化
最近在微博上看到一個很好的開源項(xiàng)目,是關(guān)于如何優(yōu)化UITableView的,加上正好最近也在優(yōu)化項(xiàng)目中的類似朋友圈功能這塊,思考了很多關(guān)于UITableView的優(yōu)化技巧,所以決定詳細(xì)的整理下對優(yōu)化UITableView的理解,需要的朋友們可以參考借鑒。2017-03-03
詳解iOS的UI開發(fā)中控制器的創(chuàng)建方法
這篇文章主要介紹了iOS的UI開發(fā)中控制器的創(chuàng)建方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11

