欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS 緩存文件的清除實(shí)現(xiàn)代碼

 更新時(shí)間:2016年10月27日 08:46:20   投稿:lqh  
這篇文章主要介紹了IOS 緩存文件的清除的相關(guān)資料,詳細(xì)說明了如何獲取緩存文件,及緩存文件的清除步驟,需要的朋友可以參考下

移動(dòng)互聯(lián)網(wǎng) APP 的應(yīng)用開發(fā),必須要時(shí)刻注意用戶體驗(yàn),以免造成APP 或者手機(jī)及其他移動(dòng)設(shè)備的卡死情況,以下是對(duì)緩存文件的處理。

移動(dòng)應(yīng)用在處理網(wǎng)絡(luò)資源時(shí),一般都會(huì)做離線緩存處理,其中以圖片緩存最為典型,其中很流行的離線緩存框架為SDWebImage。

但是,離線緩存會(huì)占用手機(jī)存儲(chǔ)空間,所以緩存清理功能基本成為資訊、購物、閱讀類app的標(biāo)配功能。

今天介紹的離線緩存功能的實(shí)現(xiàn),主要分為緩存文件大小的獲取、清除緩存文件的實(shí)現(xiàn)。

1. 獲取緩存文件的大小

-( float )readCacheSize
{
  NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];
  return [ self folderSizeAtPath :cachePath];
}

 

由于緩存文件存在沙箱中,我們可以通過NSFileManager API來實(shí)現(xiàn)對(duì)緩存文件大小的計(jì)算。
// 遍歷文件夾獲得文件夾大小,返回多少 M
- ( float ) folderSizeAtPath:( NSString *) folderPath{
  
  NSFileManager * manager = [NSFileManager defaultManager];
  if (![manager fileExistsAtPath :folderPath]) return 0 ;
  NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];
  NSString * fileName;
  long long folderSize = 0 ;
  while ((fileName = [childFilesEnumerator nextObject]) != nil ){
    //獲取文件全路徑
    NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
    folderSize += [ self fileSizeAtPath :fileAbsolutePath];
  }

  return folderSize/( 1024.0 * 1024.0);
  
}

 

// 計(jì)算 單個(gè)文件的大小
- ( long long ) fileSizeAtPath:( NSString *) filePath{
  NSFileManager * manager = [NSFileManager defaultManager];
  if ([manager fileExistsAtPath :filePath]){
    return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];
  }
  return 0;
}

 

2. 清除緩存

- (void)clearFile
{
  NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];
  NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];
  //NSLog ( @"cachpath = %@" , cachePath);
  for ( NSString * p in files) {
    
    NSError * error = nil ;
    //獲取文件全路徑
    NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];
    
    if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {
      [[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];
    }
  }
  
  //讀取緩存大小
  float cacheSize = [self readCacheSize] *1024;
  self.cacheSize.text = [NSString stringWithFormat:@"%.2fKB",cacheSize];

}


 

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論