使用资源分支计算Mac OS目录的大小而不使用不建议使用的功能

问题描述:

我想计算一个目录及其所有内容的大小。我遇到的所有解决方案都使用NSFileManager(在计算文件大小时不考虑资源分叉)或使用不推荐使用的函数的this carbon code使用资源分支计算Mac OS目录的大小而不使用不建议使用的功能

我们应该如何使用Cocoa获得准确的文件夹大小?

我解决了这个:

- (unsigned long long)folderSizeForURL:(NSURL *)url { 

    NSArray *keys = @[ NSURLTotalFileSizeKey ]; 

    NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] 
             enumeratorAtURL:url 
             includingPropertiesForKeys:keys 
             options:0 
             errorHandler:^(NSURL *url, NSError *error) { 
              // Handle the error. 
              // Return YES if the enumeration should continue after the error. 
              return YES; 
             }]; 

    unsigned long long size = 0; 

    for (NSURL *url in enumerator) { 
     NSError *error; 
     NSNumber *totalFileSize; 
     [url getResourceValue:&totalFileSize forKey:NSURLTotalFileSizeKey error:&error]; 

     size += [totalFileSize longLongValue]; 
    } 

    return size; 
} 

的结果是完全一样的取景器。