我在文件系统中缓存一些用户信息.然后阅读使用
NSData *cachedMessagesData = [NSData dataWithContentsOfURL:fileDirectoryForUserInfoCache];
Run Code Online (Sandbox Code Playgroud)
我需要知道每个缓存文件的访问时间,但是,当我使用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"];
Run Code Online (Sandbox Code Playgroud)
我发现访问日期与文件创建日期相同.通过[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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |