使用Swift在finder中显示文件夹的内容

时间:2015-06-09 16:41:40

标签: swift directory finder nsworkspace

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

e.g。

文件夹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而不突出显示任何内容。我显然使用了错误的命令。

3 个答案:

答案 0 :(得分:22)

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

NSWorkspace.shared.selectFile(nil, inFileViewerRootedAtPath: "/Users/")

答案 1 :(得分:9)

启动OS X Finder的Swift 2.1代码

使用selectFileactivateFileViewerSelectingURLs选择文件。

使用路径YOUR_PATH_STRING

在Finder中选择1项
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")]

答案 2 :(得分:1)

2020年| SWIFT 5.1:

func showInFinder(url: URL?){
    guard let url = url else { return }

    NSWorkspace.shared.activateFileViewerSelecting([url])
}

此功能将打开查找器并选择所需的文件