gpt4 book ai didi

cocoa - Cocoa 和 CoreFoundation 返回的文件属性有什么区别?

转载 作者:行者123 更新时间:2023-12-03 16:26:06 25 4
gpt4 key购买 nike

在Cocoa中,可以通过如下方式获取文件的属性

NSString *path = @"/path/to/some/file";
NSError *err = ......;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:&err];
NSLog(@"%@", dic);

例如,它将返回一个 key 目录

{
NSFileCreationDate = "2009-12-02 10:03:38 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 80;
NSFileGroupOwnerAccountName = admin;
NSFileHFSCreatorCode = 0;
NSFileHFSTypeCode = 0;
NSFileModificationDate = "2009-12-02 19:20:54 +0000";
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = Tony;
NSFilePosixPermissions = 511;
NSFileReferenceCount = 1;
NSFileSize = 496988;
NSFileSystemFileNumber = 5187496;
NSFileSystemNumber = 234881029;
NSFileType = NSFileTypeRegular;
}

现在,您还可以使用CoreFoundation MDItem来获取文件属性

NSString *path = @"/path/to/some/file";
MDItemRef mdItem = MDItemCreate(kCFAllocatorDefault, (__bridge CFStringRef)path);
CFArrayRef arr = MDItemCopyAttributeNames(mdItem);
CFDictionaryRef dic = MDItemCopyAttributes(mdItem, arr);
NSLog(@"%@", dic);

它会返回类似这样的内容

{
kMDItemAuthors = (
"Some One"
);
kMDItemContentCreationDate = "2009-12-02 10:03:38 +0000";
kMDItemContentModificationDate = "2009-12-02 19:20:54 +0000";
kMDItemContentType = "org.openxmlformats.presentationml.presentation";
kMDItemContentTypeTree = (
"org.openxmlformats.presentationml.presentation",
"org.openxmlformats.openxml",
"public.zip-archive",
"com.pkware.zip-archive",
"public.data",
"public.item",
"com.apple.bom-archive",
"public.archive",
"public.presentation",
"public.composite-content",
"public.content"
);
kMDItemDateAdded = "2011-08-16 07:52:53 +0000";
kMDItemDisplayName = "Some File.pptx";
kMDItemFSContentChangeDate = "2009-12-02 19:20:54 +0000";
kMDItemFSCreationDate = "2009-12-02 10:03:38 +0000";
kMDItemFSCreatorCode = 0;
kMDItemFSFinderFlags = 0;
kMDItemFSHasCustomIcon = 0;
kMDItemFSInvisible = 0;
kMDItemFSIsExtensionHidden = 0;
kMDItemFSIsStationery = 0;
kMDItemFSLabel = 0;
kMDItemFSName = "Some File.pptx";
kMDItemFSNodeCount = 496988;
kMDItemFSOwnerGroupID = 80;
kMDItemFSOwnerUserID = 501;
kMDItemFSSize = 496988;
kMDItemFSTypeCode = 0;
kMDItemKind = "Microsoft PowerPoint presentation";
kMDItemLogicalSize = 496988;
kMDItemPhysicalSize = 499712;
kMDItemTitle = "PowerPoint Presentation";
}

我的问题是,这两种查找文件属性的方法有什么区别?似乎有些等价,但并非总是等价,哪个更好?为什么会有这两种方式?

最佳答案

从 NSFileManager 返回的属性是存储在文件系统中的文件上的属性。 MDItemCopyAttributes 的结果来自 Spotlight 索引,其中包括大多数(全部?)文件系统属性以及系统上安装的任何 Spotlight 插件的结果。

关于cocoa - Cocoa 和 CoreFoundation 返回的文件属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8632831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com