使用 Swift 在 finder 中显示文件夹的内容
Show folder's contents in finder using Swift
我希望能够 select 一个文件夹并在 Finder 中显示其内容。我已经设法 select 文件夹本身和 select 文件夹中的文件。但是我不知道如何显示一个空文件夹的内容。
例如
文件夹A/FolderB
我想显示文件夹 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。我显然使用了错误的命令。
使用 selectFile
方法并将 nil
作为第一个参数传递,将要显示的文件夹路径作为第二个参数传递。
NSWorkspace.shared.selectFile(nil, inFileViewerRootedAtPath: "/Users/")
Swift 2.1 启动代码 OS X Finder
使用 selectFile
或 activateFileViewerSelectingURLs
到 select 个文件。
Select 路径为 YOUR_PATH_STRING
的查找器中有 1 个项目
NSWorkspace.sharedWorkspace().selectFile(YOUR_PATH_STRING, inFileViewerRootedAtPath: "")
第二个参数使用空字符串,如果您为此参数指定一个空字符串“”,文件将在主查看器中select编辑。
如果您想 select 1 个或多个文件,请使用 activateFileViewerSelectingURLs(_ fileURLs: [NSURL])
到select一个文件
NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs([NSURL].init(arrayLiteral: NSURL.init(fileURLWithPath: YOUR_PATH_STRING)))
到select个文件
let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music")]
如果您提供的项目不在同一文件夹中,则更多 windows select打开指定的文件。
let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music"),
NSURL.init(fileURLWithPath: "/Users")]
2021 | SWIFT5.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 文件的父文件和 select 文件中打开。
Url 是 nil = 什么都不做
File/path 不存在 = 什么都不做
我希望能够 select 一个文件夹并在 Finder 中显示其内容。我已经设法 select 文件夹本身和 select 文件夹中的文件。但是我不知道如何显示一个空文件夹的内容。
例如
文件夹A/FolderB
我想显示文件夹 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。我显然使用了错误的命令。
使用 selectFile
方法并将 nil
作为第一个参数传递,将要显示的文件夹路径作为第二个参数传递。
NSWorkspace.shared.selectFile(nil, inFileViewerRootedAtPath: "/Users/")
Swift 2.1 启动代码 OS X Finder
使用 selectFile
或 activateFileViewerSelectingURLs
到 select 个文件。
Select 路径为 YOUR_PATH_STRING
的查找器中有 1 个项目NSWorkspace.sharedWorkspace().selectFile(YOUR_PATH_STRING, inFileViewerRootedAtPath: "")
第二个参数使用空字符串,如果您为此参数指定一个空字符串“”,文件将在主查看器中select编辑。
如果您想 select 1 个或多个文件,请使用 activateFileViewerSelectingURLs(_ fileURLs: [NSURL])
到select一个文件
NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs([NSURL].init(arrayLiteral: NSURL.init(fileURLWithPath: YOUR_PATH_STRING)))
到select个文件
let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music")]
如果您提供的项目不在同一文件夹中,则更多 windows select打开指定的文件。
let urls : [NSURL] = [NSURL.init(fileURLWithPath: "/Users/USER_NAME/Pictures"),
NSURL.init(fileURLWithPath: "/Users/USER_NAME/Music"),
NSURL.init(fileURLWithPath: "/Users")]
2021 | SWIFT5.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 文件的父文件和 select 文件中打开。
Url 是 nil = 什么都不做
File/path 不存在 = 什么都不做