使用资源分支计算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;
}
的结果是完全一样的取景器。