NSFileManager FileSize Проблема - Какао OSX - PullRequest
1 голос
/ 20 января 2011

У меня есть функция, которая проверяет размер нескольких файлов plist в каталоге / User / Library / Preferences /.Для тестирования я использую iTunes, который на моем компьютере имеет файл настроек ~ 500 КБ.

РЕДАКТИРОВАТЬ: я исправил свой код в соответствии с ответом - после публикации этот код работает правильно.

    NSString *obj = @"iTunes";
    NSString *filePath = [NSString stringWithFormat:@"/Applications/%@.app",obj];
    NSString *bundle = [[NSBundle bundleWithPath:filePath] bundleIdentifier];

    NSString *PropertyList=[NSString stringWithFormat:@"/Preferences/%@.plist",bundle];
    NSString* fileLibraryPath = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:PropertyList];

    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:fileLibraryPath];

    if (fileExists) {
        NSError *err = nil;
        NSDictionary *fattrib = [[NSFileManager defaultManager] attributesOfItemAtPath:fileLibraryPath error:&err];

        if (fattrib != nil){            
            //Here I perform my comparisons

            NSLog(@"%i %@", [fattrib fileSize],obj);

        }
    }

Однако, независимо от того, что я делаю, размер возвращается как 102. Не 102 КБ, а просто 102. Я использовал objectForKey: NSFileSize, я использовал stringValue, все 102.


Как указано в выбранном ответе ниже, урок заключается в том, чтобы всегда проверять путь, который вы отправляете в NSFileManager.

Спасибо!

1 Ответ

3 голосов
/ 20 января 2011

filePath, который вы используете в

NSDictionary *fattrib = [ ... attributesOfItemAtPath:filePath error:&err];

представляется

/Applications/iTunes.app

, который в моей системе представляет собой каталог размером 102 байта, то же самое для /Applications/Mail.app - 102 байта. Разве путь не тот, который вы намереваетесь?

...