通过NSFileManager获取元数据

时间:2013-11-29 15:14:12

标签: objective-c macos metadata nsfilemanager

我正在使用NSFileManager并且我能够获取文件的上次更新,创建日期,...但是我无法获得文件最后一次打开的时间。有没有办法获得这些信息?

还有一个问题,我通过pathExtension属性获取MIME,但这样我得到的例子是.pdf,.doc,...而不是application / pdf,application / doc,text / txt,audio / vmw, ...是否可以自动获取此信息?

非常感谢!

2 个答案:

答案 0 :(得分:1)

我认为NSURL的NSURLContentAccessDateKey可能与你所追求的很接近,可能会有所帮助,取决于你实际在做什么..

已访问而非已打开

这意味着例如:

如果打开,则会访问该文件。

如果您快速查看,则会访问该文件。

  

NSURLContentAccessDateKey资源最多的时间   最近访问过,如果卷支持,则作为NSDate对象返回   访问日期,如果不支持访问日期,则为零(只读)。   适用于OS X v10.6及更高版本。在NSURL.h中声明。

示例:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    [self lastAcccess:@"/Users/UserName/Pictures/screenshots/text.png"];
}



- (void) lastAcccess: (NSString *) the_path  {

    NSURL *theUrl = [NSURL  fileURLWithPath:the_path];
    NSError * error;

    NSDate  *theDate;
    [theUrl getResourceValue:&theDate forKey:NSURLContentAccessDateKey error:&error];

     NSLog(@" theDate %@", theDate);

}

答案 1 :(得分:0)

使用Spotlight的MDItem API获取所有信息

NSString *path = @"/Users/dominik/Downloads/Screen Shot 2013-11-28 at 13.26.04.png";
MDItemRef item = MDItemCreate(NULL, (CFStringRef)path);
NSArray *attributes = (NSArray*)CFBridgingRelease(MDItemCopyAttributeNames(item));
NSDate *date = (NSDate*)CFBridgingRelease(MDItemCopyAttribute(item, kMDItemLastUsedDate));
CFRelease(item);
NSLog(@"%@",attributes);
NSLog(@"%@",date);