獲取App緩存文件大小

第一種簡便的方法

unsigned long long size = 0;
    
    NSString * cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
    NSString * dirpath = [cachePath stringByAppendingPathComponent:@"default"];
    
    NSFileManager * mgr = [NSFileManager defaultManager];
    
    NSArray * subpaths = [mgr subpathsAtPath:dirpath];

//  NSDirectoryEnumerator * subpaths = [mgr enumeratorAtPath:dirpath];      遍歷器 / 迭代器  

    for (NSString * subpath in subpaths) {
        NSString * fullsubpath = [dirpath stringByAppendingPathComponent:subpath];
         size += [mgr attributesOfItemAtPath:fullsubpath error:nil].fileSize;
    }
    NSLog(@"%llu",size);
    NSLog(@"%f",size*1.0/1000/1000);

<br />
<br />

第二種 可以獲取文件或者文件夾的大小

.h

#import <Foundation/Foundation.h>

@interface NSString (XMGExtension)
- (unsigned long long)fileSize;
@end

.m

#import "NSString+XMGExtension.h"

@implementation NSString (XMGExtension)

- (unsigned long long)fileSize
{
    // 總大小
    unsigned long long size = 0;
    
    // 文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    
    // 是否為文件夾
    BOOL isDirectory = NO;
    // 路徑是否存在
    BOOL exists = [mgr fileExistsAtPath:self isDirectory:&isDirectory];
    if (!exists) return size;
    if (isDirectory) { // 文件夾
        // 獲得文件夾的大小  == 獲得文件夾中所有文件的總大小
        NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
        for (NSString *subpath in enumerator) {
            // 全路徑
            NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
            // 累加文件大小
            size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
        }
    } else { // 文件
        size = [mgr attributesOfItemAtPath:self error:nil].fileSize;
    }
    return size;
}
@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,811評論 25 708
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,760評論 0 11
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 秋天的風 從童年的秋千上吹來 喚醒了兒時的夢 那兒時的夢 在歲月中流轉 灑下了一地碎片 與幾許唏噓 ...
    我是未然閱讀 330評論 0 2
  • 文/緣君人 鳳凰生于世,翱翔天地,難見蹤影。 人言其不外見,當命不久矣。 ...
    緣君人閱讀 1,630評論 6 39