2012-08-27 3 views
8

ファイルシステム内にいくつかのユーザー情報がキャッシュされています。[NSData dataWithContentsOfURL:...]でファイルを読み取った後にファイルのアクセス日時が変更されない

NSArray *filesInUserInfoCacheDirectory = [self.fileManager contentsOfDirectoryAtURL:self.cacheDirectoryForUserInfo includingPropertiesForKeys:[NSArray arrayWithObjects:@"NSURLCreationDateKey", @"NSURLContentAccessDateKey", nil] options:NSDirectoryEnumerationSkipsHiddenFiles error:nil]; 

NSDate *accessDate = [[[filesInUserInfoCacheDirectory lastObject] resourceValuesForKeys:[NSArray arrayWithObject:@"NSURLContentAccessDateKey"] error:nil] objectForKey:@"NSURLContentAccessDateKey"]; 

私がアクセス日時があることを発見:そして

NSData *cachedMessagesData = [NSData dataWithContentsOfURL:fileDirectoryForUserInfoCache]; 

を使用して読んで、私はしかし、私はプロパティキーを使用してアクセス時間をチェックしていたとき、それぞれのキャッシュされたファイルのアクセス時刻を知る必要がありますファイル作成日と同じです。 [NSData dataWithContentOfURL:...]を介してファイルを読み込んでも、ファイルのアクセス時間プロパティは変更されません。

誰でも教えてください。アクセス時間を更新するためにファイルを読み取る方法はありますか?ありがとうございます。

答えて

7

私自身の質問に答える。ついに少しずつ作業しなければなりませんでした。 NSURLファイルのアクセス日付属性は、ファイルを読み込んだ後に更新することはできません。日付は常にNSURLファイルの作成日と同じです。回避策の1つは、読み取りのたびにファイルを上書きし、アクセス日を更新することです。しかし、これは私にとっては奇妙に聞こえる。

もう1つの方法は、代わりにNSURLファイルのModification Date属性を使用することです。この属性は、FileManagerのAPI setAttributes:ofItemAtPath:によって設定できます。実際にファイルを変更するのではなく、ファイルを読み込んだら毎回、変更日属性を設定します。そして、NSURL API resourceValuesForKeysによってこのNSDateオブジェクトを読み返してください:後で。

[self.fileManager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[fileDirectoryForUserInfoCache path] error:nil]; 
関連する問題