ファイルの作成日と変更日を設定しようとしています。NSFileCreationDateを設定しても効果がありません
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDate *now = [NSDate date];
NSDictionary *timestampAttr = [NSDictionary dictionaryWithObjectsAndKeys:
now, NSFileCreationDate, now, NSFileModificationDate, nil];
BOOL ret = [fileManager setAttributes:timestampAttr ofItemAtPath:path error:&err];
ファイルの変更日が正常に変更されました。作成日は変更されません。どうして?
ret
があり、err
がnilです。 -attributesOfItemAtPath
は、timestampAttr
の両方のキーと正しい(変更された)修正日と誤った(変更されていない)作成日を含む辞書を返します。
編集: OS Xバージョン10.6を使用しています。 Xcodeプロジェクトの基本SDKは10.5です。ファイルはコンピュータの唯一のハードドライブ(RAIDなし)、私のホームフォルダ内のフォルダにあります。 ファイルが違いがあれば、そのファイルはアプリバンドルの中にあります。
編集:この単純な例では動作します:
#import <Cocoa/Cocoa.h>
int main(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSFileManager *m = [NSFileManager defaultManager];
NSString *path = ...;
[m setAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSDate date],NSFileCreationDate,nil] ofItemAtPath:path error:nil];
[pool drain];
return 0;
}
は私が(私のデスクトップ上に)簡単な例として、同じファイルの属性を設定し、私はもともとについて尋ねたアプリに上記のコードを貼り付けました。コードがアプリ内にあるときは、機能しません。
編集:これはクレイジーです。上記の単純な例がうまくいきました(私の同僚と私は両方とも自分のコンピューター上で動作しているのを見ました)が、今は動作しません。
ありがとうございました。私の編集を参照してください。 – jlstrecker