iOS Developer

获取和清除缓存

2016-10-13  本文已影响74人  LeeDev

获取某个文件夹的缓存本来我是以为NSDictionary<NSString *, id> *attributes = [manager attributesOfItemAtPath :filePath error:nil];
[attributes fileSize]; 直接获取某个文件夹的数据,其实是我太天真了,可以打印一下size ,完全对不上。这个时候需要用到 NSArray *childerFiles=[fileManager subpathsAtPath:folderPath]; 这个方法,特别提示是这个方法 深度递归去找所有的子文件夹和文件,这下再加起来就可以获得总的size。

/* 
 * 只是计算某个(不是文件夹) 路径的 size
 * 如果计算 文件夹 只会计算该文件夹的size  不会计算文件夹里面的size
 **/
+ (long long)fileSizeAtPath:( NSString *)filePath {
    
    NSFileManager *manager = [ NSFileManager defaultManager];
    if ([manager fileExistsAtPath :filePath]){
        NSDictionary<NSString *, id> *attributes = [manager attributesOfItemAtPath :filePath error:nil];
        return [attributes fileSize];
    }
    return 0;
}

/*
 * 进行深度遍历 某个文件夹里面的所有的文件
 **/
+ (float)folderSizeAtPath:(NSString *)folderPath {
    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath :folderPath])return 0;
    long long folderSize=0;
    if ([fileManager fileExistsAtPath:folderPath]) {
        
        /*
         * subpathsAtPath : This may be very expensive to compute for deep filesystem hierarchies, and should probably be avoided. 
         * 就是说会自己深度遍历所有的 子文件
         **/
        NSArray *childerFiles=[fileManager subpathsAtPath:folderPath];
        for (NSString *fileName in childerFiles) {
            
            NSString *fileAbsolutePath=[folderPath stringByAppendingPathComponent:fileName];
            long long size=[self fileSizeAtPath:fileAbsolutePath];
            folderSize += size;
        }
    }
    return folderSize/1024.0/1024.0;
}
/*
 * 清楚某个路径的cache
 **/
+(void)clearCache:(NSString *)path{
    
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) {
        NSArray *childerFiles=[fileManager subpathsAtPath:path];
        for (NSString *fileName in childerFiles) {
            
            NSString *fileAbsolutePath=[path stringByAppendingPathComponent:fileName];
            [fileManager removeItemAtPath:fileAbsolutePath error:nil];
        }
    }
}

上一篇下一篇

猜你喜欢

热点阅读