使用NSURL显示符号链接的内容

时间:2014-01-31 15:17:49

标签: cocoa nsurl

示例路径:

/用户/麦克/桌面/媒体

我创建了一个指向“媒体”文件夹的符号链接,并将其命名为“我的媒体”。

所有人都退房了。现在我想显示我的媒体文件夹的内容,以确认成功创建符号链接。

“targetField”textBox显示正确的路径字符串,其符号链接为lastPathComponent:

/ Users / Mike / Desktop / My Media

在Mavericks之前,以下代码将在Finder窗口中显示符号链接文件夹的内容:

NSString *path = [targetField stringValue];
NSURL *fileURL = [NSURL fileURLWithPath:path];
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL, nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];

在Mavericks中,代码现在打开原始Target文件夹,而不是Symbolic Link文件夹。我从技术上认识到两个文件夹的内容是一样的。但关键是代码不再将符号链接反映为新路径中的最后一个组件。它将恢复到目标文件夹(媒体)并改为打开它。

我的描述有意义吗?有没有办法使这项工作像在小牛队之前那样工作?

感谢。

1 个答案:

答案 0 :(得分:0)

您的描述对我来说并不完全合理。 “从技术上讲,两个文件夹的内容是相同的”没有意义,如果你有一个文件夹的符号链接,你只有一个文件夹,而不是两个具有相同内容的文件夹。所以我不确定你在问什么,但这是一个猜测:

在Mountain Lion下运行代码会打开一个Finder窗口,显示桌面并突出显示“我的媒体”。要打开同一窗口,但没有突出显示,您可以在路径的父文件夹上使用openURL:openFile:。例如。使用网址:

NSURL *fileURL = [NSURL fileURLWithPath:path.stringByDeletingLastPathComponent];
[NSWorkspace.sharedWorkspace openURL:fileURL];

或只是字符串:

[NSWorkspace.sharedWorkspace openFile:path.stringByDeletingLastPathComponent];

<强>附录

澄清之后,我认为你所追求的是:

[NSWorkspace.sharedWorkspace selectFile:path 
               inFileViewerRootedAtPath:path.stringByDeletingLastPathComponent];

方法selectFile:inFileViewerRootedAtPath:定义为遵循符号链接。在Mavericks下,这突出了链接本身。

HTH