首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找Macintosh文件的属性

查找Macintosh文件的属性
EN

Stack Overflow用户
提问于 2013-09-25 10:07:34
回答 1查看 419关注 0票数 1

我将举例说明我的问题的用例。

我这里有两个文件,它们恰好是来自遗留Mac版本的Finder 7.5.5Finder 8.1

如果我使用Cmd + I,我会得到以下信息:

代码语言:javascript
复制
Version:
7.5.5, © Apple Computer, Inc. 1983-96
System 7.5 Version 7.5.3

代码语言:javascript
复制
Version:
8.1, Copyright Apple Computer, Inc. 1983-97
Mac OS 8.1

我想通过编程提取这些信息。然而,我甚至不知道它在哪里。

在一个小型的Objective项目(基金会)中,我为7.5文件做了以下工作:

代码语言:javascript
复制
NSString      * finder7     = [[NSString alloc] initWithString:@"/Users/me/Desktop/Finder7"];
NSFileManager * fileManager = [NSFileManager defaultManager];
NSError       * error       = nil;
NSDictionary  * attr        = [fileManager attributesOfItemAtPath:finder7 error:&error];
NSLog(@"%@", attr);

这是输出:

代码语言:javascript
复制
2013-09-25 10:53:30.224 GetAttributes[1164:903] {
    NSFileCreationDate = "1996-01-15 12:00:00 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 20;
    NSFileGroupOwnerAccountName = staff;
    NSFileHFSCreatorCode = 1296122707;
    NSFileHFSTypeCode = 1179534418;
    NSFileModificationDate = "1996-01-15 12:00:00 +0000";
    NSFileOwnerAccountID = 501;
    NSFileOwnerAccountName = me;
    NSFilePosixPermissions = 493;
    NSFileReferenceCount = 1;
    NSFileSize = 0;
    NSFileSystemFileNumber = 4384377;
    NSFileSystemNumber = 234881026;
    NSFileType = NSFileTypeRegular;
}

正如您所看到的,没有提到版本或版权。我不能打开“应用程序的内容”,因为遗留应用程序显然没有它。

因此,我认为它可以是一个扩展属性,所以我得到了控制台并执行了以下操作:

代码语言:javascript
复制
$ ls -l@
-rwxr-xr-x@  1 me    staff          0 15 Jan  1996 Finder7
        com.apple.FinderInfo           32
        com.apple.ResourceFork     503994
-rwxr-xr-x@  1 me    staff    3631000 16 Dec  1997 Finder8
        com.apple.FinderInfo           32
        com.apple.ResourceFork     502012
        com.apple.metadata:kMDItemFinderComment        42

然后,我在每个条目中找到了这些条目:

代码语言:javascript
复制
$ xattr -l com.apple.FinderInfo Finder7
(...)
00077AE0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00077AF0  00 00 32 07 55 80 00 00 00 05 37 2E 35 2E 35 25  |..2.U.....7.5.5%|
00077B00  37 2E 35 2E 35 2C 20 A9 20 41 70 70 6C 65 20 43  |7.5.5, . Apple C|
00077B10  6F 6D 70 75 74 65 72 2C 20 49 6E 63 2E 20 31 39  |omputer, Inc. 19|
00077B20  38 33 2D 39 36 00 00 00 2B 00 00 00 00 00 00 00  |83-96...+.......|
(...)

$ xattr -l com.apple.FinderInfo Finder8
(...)
00077330  06 46 69 6E 64 65 72 00 00 00 00 00 00 36 08 10  |.Finder......6..|
00077340  80 00 00 00 03 38 2E 31 2B 38 2E 31 2C 20 43 6F  |.....8.1+8.1, Co|
00077350  70 79 72 69 67 68 74 20 41 70 70 6C 65 20 43 6F  |pyright Apple Co|
00077360  6D 70 75 74 65 72 2C 20 49 6E 63 2E 20 31 39 38  |mputer, Inc. 198|
00077370  33 2D 39 37 00 00 00 26 01 08 10 80 00 06 46 69  |3-97...&......Fi|
00077380  6E 64 65 72 00 00 00 00 00 00 00 00 00 00 00 00  |nder............|
(...)

我从来没有真正使用扩展属性,特别是在开发中。所以我需要点光。我看到版本号在不同的位置。我怎样才能像OSX那样把这些信息弄清楚呢?我花了几分钟手工完成这个操作,但我仍然不清楚版本是如何存储的。还有别的地方可以找到这个信息吗?还是我往正确的方向走了?

是否有目标-C或C解决方案可以做到这一点,所以我不需要重新发明车轮?

我很感激你的帮助!

我还试着检查rsrc。在版本号前发现了一个复活节彩蛋。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-25 10:44:38

信息存储在扩展属性com.apple.ResourceFork中。您可以使用像DeRez这样的工具来解压缩信息。

如果您想以编程方式访问资源叉,就会有资源管理器 API,但是在10.8中几乎所有的内容都是不推荐的。版本信息的资源类型是'vers'资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19001993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档