неверный размер папки - PullRequest
       1

неверный размер папки

0 голосов
/ 30 января 2012

Этот код правильный, но размер папки неправильный. Если я меняю каталог, размер всегда будет неправильным. Например, размер «%@/Caches/com.apple.Safari/Webpage Previews» составляет 23 МБ, но у меня 16,5 КБ.

NSString *path = [NSString stringWithFormat:@"%@/Caches/com.apple.Safari/Webpage Previews", [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
    NSNumber *fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil] objectForKey:NSFileSize];
    resultsize += [fileSize unsignedLongLongValue];

также я использовал это, но размер всегда неправильный:

NSFileManager *fm = [[NSFileManager alloc] init];    
    NSURL *LibraryURL = [[fm URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
    NSURL *previewsURL = [LibraryURL URLByAppendingPathComponent:@"Caches/com.apple.Safari/Webpage Previews"];

    resultSize += [[[fm attributesOfItemAtPath:[previewsURL path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue];

Вы можете мне помочь? Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Если вы хотите получить размер всех файлов в папке, вам нужно будет перебрать содержимое папки и получить размеры фактических файлов:

unsigned long long totalSize = 0;
NSFileManager *fm = [[NSFileManager alloc] init];
NSURL *libraryURL = [[fm URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *previewsURL = [LibraryURL URLByAppendingPathComponent:@"Caches/com.apple.Safari/Webpage Previews"];

NSDirectoryEnumerator *enumerator = [fm enumeratorAtURL:previewsURL includingPropertiesForKeys:[NSArray arrayWithObject:NSURLFileSizeKey] options:0 errorHandler:nil /* or an actual error handler */];

for (NSURL *url in enumerator) {
    NSNumber *sizeNumber;
    if ([url getResourceValue:&sizeNumber forKey:NSURLFileSizeKey error:nil /* or an error */])
        totalSize += [sizeNumber unsignedLongLongValue]; 
}

(я не проверял это.)

0 голосов
/ 23 февраля 2012

У Льва есть какой-то кэш для этих кумулятивных размеров.Попробуйте на томе сервера (Mac OS X Lion Server AFP):

  • Открыть папку с большим количеством подпапок
  • Вид меню> в виде списка
  • Вид меню>Упорядочить по> Размеру
  • Средство поиска показывает все вложенные папки в группе «---»
  • Вид меню> Показать параметры просмотра
  • установите флажок «Рассчитать все размеры файлов»
  • теперь Finders соответствующим образом группирует подпапки
  • , и даже когда вы закроете это окно, отключите сервер и снова подключитесь, эти размеры будут быстрее, а также, если они не упорядочены по размеру

-> где хранится эта информация?какой API использовать?

...