6

如您所知,服务器端 swift Perfect 2.0 框架已经发布。我试图获取根目录的路径,但还没有任何运气。

片段 1

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

这段代码给了我路径

/Resources/fileuploads

片段 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

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

问题

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

4

6 回答 6

8

这适用于 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) 
于 2018-05-05T19:32:18.057 回答
4

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

接下来,要获取您的工作目录路径,您必须使用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 上都一样工作......希望这会有所帮助。

于 2016-09-21T09:35:05.100 回答
1

似乎您已经解决了您的问题,但是如果其他人(例如我自己)对您看到Dir.workingDir.path差异的原因感到好奇,请注意,如果您从命令行(从您的根目录,swift build+ .build/debut/YourProjectName),工作目录将是您的项目根目录。

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

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

于 2016-12-12T00:06:29.970 回答
0

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

于 2018-11-16T21:33:03.440 回答
-1
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)

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

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

您仍然需要任何帮助,请随时问我。

于 2016-09-21T07:20:22.460 回答
-5

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

于 2016-09-24T08:28:16.100 回答