2012-08-27 12 views
8

मैं फ़ाइल सिस्टम में कुछ उपयोगकर्ता जानकारी कैशिंग कर रहा हूं। और फिरफ़ाइल के एक्सेसडेट को फ़ाइल को पढ़ने के बाद नहीं बदला गया [NSData डेटा WithContentsOfURL: ...]

NSData *cachedMessagesData = [NSData dataWithContentsOfURL:fileDirectoryForUserInfoCache]; 

मैं प्रत्येक कैश्ड फ़ाइल का उपयोग समय पता करने की जरूरत का उपयोग कर पढ़ने, तथापि, जब मैं उपयोग समय की जाँच की गई थी संपत्ति कुंजी का उपयोग:

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 डेटा WithContentOfURL: ...] फ़ाइल की एक्सेस टाइम प्रॉपर्टी नहीं बदलेगा।

क्या कोई मुझे बता सकता है क्यों? एक्सेस समय अपडेट करने के लिए फ़ाइल को पढ़ने का कोई तरीका है? आपका अग्रिम रूप से बोहोत धन्यवाद।

उत्तर

7

मेरे अपने प्रश्न का उत्तर दें। मुझे अंत में थोड़ा सा काम करना पड़ा। किसी फ़ाइल को पढ़ने के बाद किसी NSURL फ़ाइल की एक्सेस डेट विशेषता को अद्यतन नहीं किया जा सकता है, यह दिनांक हमेशा NSURL फ़ाइल की निर्माण तिथि के समान ही होता है। चारों ओर काम करने का एक तरीका है पढ़ने के बाद हर बार फ़ाइल को ओवरराइट करना, फिर एक्सेस तिथि अपडेट हो जाती है। लेकिन यह मेरे लिए अजीब लगता है।

दूसरा तरीका इसके बजाय एक NSURL फ़ाइल की संशोधन दिनांक विशेषता का उपयोग करना है। यह विशेषता FileManager के API सेट द्वारा सेट की जा सकती है विशेषताएं: ItemAtPath:। वास्तव में फ़ाइल को संशोधित करने के बजाय, मैंने फ़ाइल पढ़ने के बाद हर बार संशोधन दिनांक विशेषता सेट की है। और उसके बाद NSRL API संसाधन ValuesForKeys द्वारा इस NSDate ऑब्जेक्ट को वापस पढ़ें: बाद में।

[self.fileManager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[fileDirectoryForUserInfoCache path] error:nil]; 
संबंधित मुद्दे