23

我希望能够选择一个文件夹并在 Finder 中显示其内容。我设法选择了文件夹本身并在文件夹中选择了一个文件。但我不知道如何显示空文件夹的内容。

例如

文件夹 A/文件夹 B

我想显示文件夹文件夹 B 的内容(可能为空)。

我写了以下代码:

func showFolder(fileName : String)
{
    var dataPath = homeDirectory.stringByAppendingPathComponent(fileName)
    var urlPath = NSURL(fileURLWithPath: dataPath)
    var selectedURLs = [urlPath!]
    NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(selectedURLs)
}

这只会打开文件夹 A 并突出显示文件夹 B。这非常接近,但并不完全正确。

我需要能够在没有突出显示的情况下打开文件夹 B。我显然使用了错误的命令。

4

3 回答 3

45

使用该selectFile方法并nil作为第一个参数传递,将要显示的文件夹的路径作为第二个参数。

NSWorkspace.shared.selectFile(nil, inFileViewerRootedAtPath: "/Users/")
于 2015-09-30T11:59:15.560 回答
23

2021 | 斯威夫特 5.1:

func showInFinder(url: URL?) {
    guard let url = url else { return }
    
    if url.isDirectory {
        NSWorkspace.shared.selectFile(nil, inFileViewerRootedAtPath: url.path)
    }
    else {
        NSWorkspace.shared.activateFileViewerSelecting([url])
    }
}

显示查找器:

  • 文件夹的 url = 将显示文件夹的内容。

  • 文件的 url = 将在 Finder 文件的父级中打开并在那里选择文件。

  • Url 为 nil = 什么也不做

  • 文件/路径不存在 = 什么都不做

于 2019-12-24T07:25:27.860 回答
10

用于启动 OS X Finder 的 Swift 2.1 代码

使用selectFileactivateFileViewerSelectingURLs选择文件。

在查找器中选择 1 个项目,路径为 YOUR_PATH_STRING

NSWorkspace.sharedWorkspace().selectFile(YOUR_PATH_STRING, inFileViewerRootedAtPath: "")

第二个参数使用空字符串,如果您为此参数指定一个空字符串“”,则在主查看器中选择文件。


如果要选择 1 个或多个文件,请使用activateFileViewerSelectingURLs(_ fileURLs: [NSURL])

选择一个文件

NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs([NSURL].init(arrayLiteral: NSURL.init(fileURLWithPath: YOUR_PATH_STRING)))

选择多个文件

let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
                      NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music")]

如果您提供的项目不在同一文件夹中,则会打开更多选择指定文件的窗口。

let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
                      NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music"),
                      NSURL.init(fileURLWithPath: "/Users")]
于 2016-01-03T15:11:06.917 回答