1. 程式人生 > >SDWebImage/SDImageCache 獲得快取大小,清理快取。

SDWebImage/SDImageCache 獲得快取大小,清理快取。

最新版的SDWebImage已帶有獲取快取空間總大小的方法 -(vode) getSize ; 

若要想獲取SDImageCache指定快取大小 可以新增一下方法;

- (float)getCachesSize{

float getSize = 0;

NSDirectoryEnumerator *fileEnumerator = [[NSFileManagerdefaultManager] enumeratorAtPath:self.diskCachePath];

for ( NSString* fileName in fileEnumerator){

NSString* cachePath = [

self.diskCachePathstringByAppendingPathComponent:fileName];

nser

NSError *error = nil;

NSDictionary* attrs = [[NSFileManagerdefaultManager] attributesOfItemAtPath:cachePath error:&error];

unsignedlonglong length = [attrs fileSize];

        cacheSize += length / 1024.0 / 1024.0;

    }

return cacheSize;

}

呼叫以上的方法便可以獲得快取大小,

-------------------------------又是一個寧靜的夜晚------------------------------------

下面方法是清除快取的方法,在指定目錄的情況下,清除指定目錄的檔案,方法是通用的。

SDImageCache 類中也是帶有清除快取的方法 ;- (void)clearMemory; - (void)clearDisk; 主要使用第二個。

+ (void)cleanFileDirectoryPath{

NSString* pathFile  =  NSSearchPathForDirectoriesInDomains

(NSLibraryDirectory, NSUserDomainMask, YES)[0];

NSString* cachePath = [pathFile stringByAppendingPathComponent:

@"Caches/com.hackemist.SDWebImageCache.default"];

if (cachePath) {

         [[NSFileManagerdefaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:YESattributes:nilerror:nil];

    }

NSError* error = nil;

    [[NSFileManagerdefaultManager] removeItemAtPath:cachePath error:&error];

    [[NSFileManagerdefaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:YESattributes:nilerror:&error];

}

當然呼叫這個方法也可以實現清除快取的 ;(路徑根據需要修改,這裡的路徑為SDImageCache的快取路徑)。