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

29
我希望能够选择一个文件夹并显示其在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,但没有任何突出显示的内容。我显然使用了错误的命令。

3个回答

53

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

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

34
2021 | SWIFT 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])
    }
}

extension URL {

    ///IMPORTANT: this code return false even if file or directory does not exist(!!!)
    var isDirectory: Bool {
        hasDirectoryPath
    }
}

showInFinder:

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

  • 文件的URL = 将在Finder中打开文件的父文件夹并选择文件。

  • URL为空 = 不会执行任何操作,也不会抛出错误。

  • 文件/路径不存在 = 不会执行任何操作,也不会抛出错误。


10

启动OS X Finder的Swift 2.1代码

使用selectFileactivateFileViewerSelectingURLs选择文件。

在Finder中选择路径为YOUR_PATH_STRING的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")]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接