我有一个功能可以检查/ User / Library / Preferences /目录中几个plist文件的大小。为了进行测试,我使用的是iTunes,我的机器上的iTunes的首选项文件约为500kb。

编辑:我已经按照答案更正了我的代码-发布后,此代码正常工作。

    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。不是102kb,而是102。我使用了objectForKey:NSFileSize,我使用了stringValue,全都是102。



如下面所选答案中所述,汲取的教训是,始终检查要提交给NSFileManager的路径。

谢谢!

最佳答案

您正在使用的filePath

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


似乎

/Applications/iTunes.app


在我的系统上,该目录的大小为102字节,与/Applications/Mail.app-102字节相同。只是路径不是您想要的吗?

关于objective-c - NSFileManager FileSize问题- cocoa OSX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4740897/

10-09 16:35