在 macOS 上,Swift 如何获取当前用户的 Applications 目录的名称?
换句话说,不是全局“/Applications”目录,而是仅供当前用户使用的目录,例如“/Users/eric/Applications”或者“/Users/eric/”库/容器/com.eric.MyApp/数据/应用程序”
以下代码:
import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
let listOfSearchPathDirectory: [FileManager.SearchPathDirectory] = [
.applicationDirectory,
.allApplicationsDirectory
]
let listOfSearchPathDomainMask = [
FileManager.SearchPathDomainMask.userDomainMask
]
let fileManager = FileManager.default
for searchPathDirectory in listOfSearchPathDirectory {
print(" A [\(searchPathDirectory.rawValue)]")
for searchPathDomainMask in listOfSearchPathDomainMask {
for url in fileManager.urls(for: searchPathDirectory, in: searchPathDomainMask) {
print(" B [\(url)]")
}
}
}
}
}
生成这样的输出:
A [1]
B [file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Applications/]
A [100]
B [file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Applications/]
B [file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Applications/Utilities/]
B [file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Developer/Applications/]
B [file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Applications/Demos/]
其中包括我认为正确的值:
file:///Users/eric/Library/Containers/com.eric.MyApp/Data/Applications/
但是当我运行应用程序时,该目录不存在。
事实上,如果我通过在终端应用程序中键入以下内容来列出其父目录的内容:
ls -l /Users/eric/Library/Containers/com.eric.MyApp/Data
我得到以下信息,但这不包括预期的目录“Applications”:
> lrwxr-xr-x 1 eric staff 19 22 Jun 11:37 Desktop -> ../../../../Desktop
> drwx------ 3 eric staff 96 22 Jun 11:37 Documents
> lrwxr-xr-x 1 eric staff 21 22 Jun 11:37 Downloads -> ../../../../Downloads
> drwx------ 30 eric staff 960 22 Jun 11:37 Library
> lrwxr-xr-x 1 eric staff 18 22 Jun 11:37 Movies -> ../../../../Movies
> lrwxr-xr-x 1 eric staff 17 22 Jun 11:37 Music -> ../../../../Music
> lrwxr-xr-x 1 eric staff 20 22 Jun 11:37 Pictures -> ../../../../Pictures
我希望也能看到这样的一行:
> lrwxr-xr-x 1 eric staff 19 22 Jun 11:37 Applications -> ../../../../Applications
有人知道我如何告诉代码我希望这个本地应用程序目录存在吗?
非常感谢
最佳答案
你得到目录
do {
let userApplicationDirectory = try FileManager.default.url(for: .applicationDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true)
print(userApplicationDirectory)
} catch { print(error)}
如果目录丢失,将创建它。
如果应用程序被沙盒化,它指向容器中的.../Data/Applications
,否则指向~/Applications
关于swift - macOS, swift : Find current user's Applications directory (not the global "/Applications" directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50988933/