1

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

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

4

1 回答 1

2

我解决了这个问题:

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

结果与取景器完全相同。

于 2014-02-19T09:55:45.880 回答