nsurl – 通过[NSData dataWithContentsOfURL:…]读取文件后文件的AccessDate不会改变

我在文件系统中缓存一些用户信息.然后阅读使用

NSData *cachedMessagesData = [NSData dataWithContentsOfURL:fileDirectoryForUserInfoCache];

我需要知道每个缓存文件的访问时间,但是,当我使用Property键检查访问时间时:

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 dataWithContentOfURL:…]读取文件不会更改文件的访问时间属性.

谁能告诉我为什么?有没有办法读取文件以更新访问时间?非常感谢提前.

回答我自己的问题.我终于不得不解决一下了.读取文件后无法更新NSURL文件的访问日期属性,其日期始终与NSURL文件的创建日期相同.解决方法之一是每次读取后覆盖文件,然后更新访问日期.但这对我来说听起来很怪异.

另一种方法是使用NSURL文件的“修改日期”属性.此属性可以由FileManager的API setAttributes:ofItemAtPath:设置.我没有实际修改文件,而是每次读取文件后都设置修改日期属性.然后通过NSURL API resourceValuesForKeys读回这个NSDate对象:稍后.

[self.fileManager setAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] ofItemAtPath:[fileDirectoryForUserInfoCache path] error:nil];
相关文章
相关标签/搜索