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

时间:2016-09-21 07:05:27

标签: swift perfect

正如您所了解的服务器端swift Perfect 2.0框架已经完成。我试图获取根目录的路径但是还没有任何运气。

Snippet 1

let fileDir = Dir("/Resources/fileuploads")
print(fileDir.path)

这段代码给我路径

/Resources/fileuploads

Snippet 2

let fileDir = Dir(Dir.workingDir.path + "Resources/fileuploads")
print(fileDir.path)

此代码为我提供了路径

/Users/username/Library/Developer/Xcode/DerivedData/projname-acxmbygsjkthxvbigpfoqesstidh/Build/Products/Debug/Resources/fileuploads/

然而我想要的实际路径,指向的是。

/Users/username/Documents/folderOne/folderTwo/projname/Resources/fileuploads/

其中

/Users/username/Documents/folderOne/folderTwo/projname

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

问题

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

6 个答案:

答案 0 :(得分:3)

这适用于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) 

答案 1 :(得分:1)

你可以在Swift 3和Perfect 2中使用Foundation。

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

let fileManager = FileManager.default
let currentPath = fileManager.currentDirectoryPath
print("Current path: \(currentPath)")

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

./.build/debug/AltTabAPI
[INFO] Starting HTTP server on 0.0.0.0:8181 with document root ./webroot
Current path: /Users/rb/ProjectsSwift/AltTabAPI

同时适用于Mac和Linux ......希望这会有所帮助。

答案 2 :(得分:1)

好像你已经解决了你的问题,但如果其他人(比如我自己)对你看到Dir.workingDir.path差异的原因感到好奇,请注意如果你构建并运行一个完美的项目命令行(从您的根目录swift build + .build/debut/YourProjectName),工作主管将是您的项目根目录。

但是,如果使用Xcode构建和运行,则类似/Users/username/Library/Developer/Xcode/DerivedData/projname-acxmbygsjkthxvbigpfoqesstidh/Build/Products/Debug/Resources/

尝试构建一个从Xcode提供静态文件的项目时有点烦人,但很高兴知道。

答案 3 :(得分:0)

如果使用Xcode生成静态文件时遇到问题,则可以在“生成”设置中添加“复制阶段”,以将这些文件复制到可执行目录中。

答案 4 :(得分:-1)

var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)

访问文件夹..代码如下..

let  filePath = paths[0].stringByAppendingString("/image.mov")

你仍然需要任何帮助随时问我。

答案 5 :(得分:-4)

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