我想计算一个目录及其所有内容的大小。我遇到的所有解决方案要么使用 NSFileManager (在计算文件大小时不考虑资源分叉),要么使用不推荐使用的函数的碳代码。
我们现在应该如何使用 Cocoa 获得准确的文件夹大小?
我想计算一个目录及其所有内容的大小。我遇到的所有解决方案要么使用 NSFileManager (在计算文件大小时不考虑资源分叉),要么使用不推荐使用的函数的碳代码。
我们现在应该如何使用 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;
}
结果与取景器完全相同。