使用资源分支计算 Mac OS 目录的大小,而不使用已弃用的函数



我想计算目录的大小及其所有内容。我遇到的所有解决方案要么使用 NSFileManager(在计算文件大小时不考虑资源分叉),要么使用已弃用函数的碳代码。

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

我解决了这个问题:

- (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;
}

结果与查找器完全相同。