【问题标题】:Show folder's contents in finder using Swift使用 Swift 在 finder 中显示文件夹的内容
【发布时间】:2015-06-09 16:41:40
【问题描述】:

我希望能够选择一个文件夹并在 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。我显然使用了错误的命令。

【问题讨论】:

    标签: swift directory finder nsworkspace


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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])
          }
      }
      

      showInFinder:

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

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

      • Url 为 nil = 什么都不做

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

      【讨论】:

        【解决方案3】:

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

        使用selectFileactivateFileViewerSelectingURLs 选择文件。

        在查找器中选择路径为 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")]
        

        【讨论】:

          猜你喜欢
          • 2016-05-30
          • 1970-01-01
          • 1970-01-01
          • 2012-03-22
          • 1970-01-01
          • 2017-08-23
          • 1970-01-01
          • 2021-10-09
          • 2021-05-15
          相关资源
          最近更新 更多