ディレクトリとそのすべての内容のサイズを計算したいと思います。私が遭遇したすべてのソリューションは、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;
}
結果はファインダーとまったく同じです。