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

时间:2014-02-18 08:35:44

标签: macos osx-lion osx-mountain-lion osx-mavericks

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

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

1 个答案:

答案 0 :(得分:1)

我解决了这个问题:

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

结果与取景器完全相同。