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 に答える