1

/User/Library/Preferences/ ディレクトリにあるいくつかの plist ファイルのサイズをチェックする機能があります。テストの目的で、私は 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 を使用しました。


以下の選択した回答で述べたように、学んだ教訓は、NSFileManager に送信するパスを常に確認することです。

ありがとう!

4

1 に答える 1

3

で使用filePathしているもの

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

であるように見えます

/Applications/iTunes.app

私のシステムでは、サイズが 102 バイトのディレクトリで、102 バイトも同じです/Applications/Mail.app。パスが意図したものではないというだけですか?

于 2011-01-19T21:34:39.670 に答える