如何以编程方式在Finder中打开文件夹而不选择任何内容?

时间:2016-03-04 22:29:37

标签: macos cocoa

当用户点击我的应用程序中的按钮时,我想让Finder走到前面并显示文件夹的内容。 NSWorkspace课程有两个来电,activateFileViewerSelectingURLs(:)selectFile(:inFileViewerRootedAtPath:)几乎可以满足我的要求,但他们都会选择一个或多个项目。我不希望Finder选择任何东西。

如果我输入

,我会看到我想要的行为
/usr/bin/open /path/to/my/folder
终端中的

是否有Cocoa API用于执行此操作,或者我是否需要NSTask运行/usr/bin/open

4 个答案:

答案 0 :(得分:10)

要求工作区将文件夹作为文件打开就足够了,因为Finder是文件夹的默认应用程序:

NSWorkspace.sharedWorkspace().openFile("/path/to/my/folder")

答案 1 :(得分:1)

如果您想确保Finder打开文件夹而不管默认的应用程序设置,您可以使用Applescript:

NSString *script = [NSString StringWithFormat: 
    @“tell application \”Finder\”\nopen folder (\“%@\” as POSIX file)\nend tell\n”, path];

NSAppleScript *openScript = [[NSAppleScript alloc] initWithSource: script];
[openScript executeAndReturnError:nil];

答案 2 :(得分:0)

AppleScript是我的解决方案,但我必须添加标签(\t)才能正常工作:

NSString* path = ...;
NSString* script = [NSString stringWithFormat:@"tell application \"Finder\"\n\tactivate\n\tmake new Finder window to (POSIX file \"%@\")\nend tell\n", path];
NSAppleScript* openScript = [[NSAppleScript alloc] initWithSource:script];
[openScript executeAndReturnError:nil];

以便生成的脚本如下所示:

tell application "Finder"
    activate
    make new Finder window to (POSIX file "/Users/MyUser/someFolder")
end tell

答案 3 :(得分:0)

NSWorkspace.shared.open(URL(fileURLWithPath: "/your/path/goes/here"))

请注意,您必须具有要打开的路径的读取权限。