IOS 캐 시 파일 제거 구현 코드

이동 인터넷 앱 의 앱 개발 은 앱 이나 휴대 전화 및 기타 모 바 일 기기 의 카드 사 태 를 초래 하지 않도록 사용자 체험 에 항상 주의해 야 하 며,다음은 캐 시 파일 에 대한 처리 입 니 다.
모 바 일 애플 리 케 이 션 은 네트워크 자원 을 처리 할 때 보통 오프라인 캐 시 처 리 를 하 는데 그 중에서 이미지 캐 시가 가장 전형 적 이 고 그 중에서 유행 하 는 오프라인 캐 시 프레임 워 크 는 SDWebImage 입 니 다.
그러나 오프라인 캐 시 는 휴대 전화 저장 공간 을 차지 하기 때문에 캐 시 청소 기능 은 기본적으로 정보,쇼핑,읽 기 류 app 의 레이 블 기능 이 된다.
오늘 소 개 된 오프라인 캐 시 기능 의 실현 은 주로 캐 시 파일 크기 의 가 져 오기,캐 시 파일 제거 로 나 뉜 다.
1.캐 시 파일 의 크기 가 져 오기

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

 

           ,      NSFileManager API             。
//             ,     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);
  
}

 

//           
- ( 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];

}


 

 읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기