如何在Perfect 2.0中获取项目文件夹的根目录路径?

Paw*_*shi 5 swift perfect

如您所知,对于服务器端而言,完美的2.0框架已经面世。我试图获取根目录的路径,但是还没有任何运气。

片段1

let fileDir = Dir("/Resources/fileuploads")
print(fileDir.path)
Run Code Online (Sandbox Code Playgroud)

这段代码给了我路径

/Resources/fileuploads
Run Code Online (Sandbox Code Playgroud)

片段2

let fileDir = Dir(Dir.workingDir.path + "Resources/fileuploads")
print(fileDir.path)
Run Code Online (Sandbox Code Playgroud)

这段代码给了我路径

/Users/username/Library/Developer/Xcode/DerivedData/projname-acxmbygsjkthxvbigpfoqesstidh/Build/Products/Debug/Resources/fileuploads/
Run Code Online (Sandbox Code Playgroud)

但是,我要指向的实际路径是。

/Users/username/Documents/folderOne/folderTwo/projname/Resources/fileuploads/
Run Code Online (Sandbox Code Playgroud)

哪里

/Users/username/Documents/folderOne/folderTwo/projname
Run Code Online (Sandbox Code Playgroud)

是项目的根文件夹所在的路径。

我如何获得项目根文件夹的路径?

Sha*_*ssy 7

这适用于 Swift 3.1 及更高版本

// As a string
let THIS_FILES_PATH:String = #file
print(THIS_FILES_PATH) 

// As an array
let THIS_FILES_PATH_AS_ARRAY:[String] = #file.split(separator: "/").map({String($0)})
print(THIS_FILES_PATH_AS_ARRAY) 
Run Code Online (Sandbox Code Playgroud)


小智 6

实际上,您可以将 Foundation 与 Swift 3 和 Perfect 2 一起使用。

接下来,要获取工作目录路径,您必须使用Filemanager

let fileManager = FileManager.default
let currentPath = fileManager.currentDirectoryPath
print("Current path: \(currentPath)")
Run Code Online (Sandbox Code Playgroud)

就我而言,上面的代码片段(隐藏在处理函数中)在从终端运行时生成以下内容:

./.build/debug/AltTabAPI
[INFO] Starting HTTP server on 0.0.0.0:8181 with document root ./webroot
Current path: /Users/rb/ProjectsSwift/AltTabAPI
Run Code Online (Sandbox Code Playgroud)

在 Mac 和 Linux 上的工作方式相同...希望这会有所帮助。


Paw*_*shi -7

经过长时间的研究,我发现没有必要获取这个位置。Dir 返回的目录足以存储我的文件。