如何在Perfect 2.0中获取项目文件夹的根目录路径?
How to get path of root directory of your project folder in Perfect 2.0?
正如你所知道的服务器端swift完美的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
是我项目根目录所在的路径
问题
如何获取项目根文件夹的路径?
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
访问文件夹..代码如下..
let filePath = paths[0].stringByAppendingString("/image.mov")
你还需要什么帮助随时问我。
您实际上可以将 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 上的效果相同...希望这对您有所帮助。
经过长时间的研究,我发现没有必要获取这个位置。 Dir 返回的目录足以存储我的文件。
看来您已经解决了您的问题,但如果其他人(例如我自己)对您看到 Dir.workingDir.path
差异的原因感到好奇,请注意,如果您构建并 运行命令行中的 Perfect 项目(从您的根目录,swift build
+ .build/debut/YourProjectName
),工作主管将是您的项目根目录。
但是,如果您使用 Xcode 构建并 运行,将类似于 /Users/username/Library/Developer/Xcode/DerivedData/projname-acxmbygsjkthxvbigpfoqesstidh/Build/Products/Debug/Resources/
。
尝试构建一个服务于来自 Xcode 的静态文件的项目时有点烦人,但很高兴知道。
这适用于 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([=10=])})
print(THIS_FILES_PATH_AS_ARRAY)
如果您在使用 Xcode 构建时遇到静态文件问题,您可以在构建设置中添加复制阶段以将这些文件复制到可执行目录。
正如你所知道的服务器端swift完美的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
是我项目根目录所在的路径
问题
如何获取项目根文件夹的路径?
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
访问文件夹..代码如下..
let filePath = paths[0].stringByAppendingString("/image.mov")
你还需要什么帮助随时问我。
您实际上可以将 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 上的效果相同...希望这对您有所帮助。
经过长时间的研究,我发现没有必要获取这个位置。 Dir 返回的目录足以存储我的文件。
看来您已经解决了您的问题,但如果其他人(例如我自己)对您看到 Dir.workingDir.path
差异的原因感到好奇,请注意,如果您构建并 运行命令行中的 Perfect 项目(从您的根目录,swift build
+ .build/debut/YourProjectName
),工作主管将是您的项目根目录。
但是,如果您使用 Xcode 构建并 运行,将类似于 /Users/username/Library/Developer/Xcode/DerivedData/projname-acxmbygsjkthxvbigpfoqesstidh/Build/Products/Debug/Resources/
。
尝试构建一个服务于来自 Xcode 的静态文件的项目时有点烦人,但很高兴知道。
这适用于 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([=10=])})
print(THIS_FILES_PATH_AS_ARRAY)
如果您在使用 Xcode 构建时遇到静态文件问题,您可以在构建设置中添加复制阶段以将这些文件复制到可执行目录。