我想到的程序需要与所有以特定扩展名结尾的文件(例如“.abc”)相关联,因此当用户双击某些“file.abc”时它会打开。当用户双击此类文件的别名时,是否可以在 Cocoa 中确定?
问问题
629 次
1 回答
1
应用程序委托将application:openFile:
在以这种方式启动时收到。如果那导致您启动,application:openFile:
将介于applicationWillFinishLaunching:
和之间applicationDidFinishLaunching:
。您可能会application:openFile:
在其他时间收到,因为您可能已经在用户双击文档时启动。
编辑:别名现在称为“书签”(自 10.6 起)。你NSURL
用来阅读它们。有关完整详细信息,请参阅文件系统编程指南,但这里有一个简短的示例:
NSURL *aliasURL = [NSURL fileURLWithPath:@"..."];
NSData *alias = [NSURL bookmarkDataWithContentsOfURL:aliasURL error:&error];
if (alias == NULL) {
NSLog(@"Failed aliasURL: %@", error);
}
BOOL isStale;
NSURL *realURL = [NSURL URLByResolvingBookmarkData:alias options:0 relativeToURL:nil bookmarkDataIsStale:&isStale error:&error];
if (isStale || realURL == NULL) {
NSLog(@"Failed realURL: %@", error);
}
NSLog(@"realPath:%@", [realURL path]);
我不知道有任何 API 会告诉您给定NSURL
是否是别名,而不是尝试将其作为别名读取并查看它是否失败。
请记住,用户也可能使用符号链接创建相同的情况。
于 2012-09-08T13:27:23.583 回答