2016-12-26 73 views
1

我有以下的項目佈局(簽約):Heroku:如何讀取文件?

project_root 
└── Sources 
   └── App 
     ├── main.swift 
    └── Models 
       └── SQL 
          └── createTables.sql 

我試圖讀取createTables.sql文件在運行時,但FileManager.fileExists()說,它不存在。我在main.swift得到了路徑使用#file

let path = URL(fileURLWithPath: #file).deletingLastPathComponent().path + "/Models/SQL/createTables.sql" 

打印出來的路徑,這似乎是正確的。 我猜測,由於Heroku的ephemeral filesystem,源樹無法訪問。我怎樣才能解決這個問題,並在運行時讀取文件?

回答

2

使用drop.workdir可在編譯後獲取項目目錄。

try String(contentsOfFile: drop.workDir + "Resources/SQL/createTables.sql") 

注意我也動了你的文件出來Sources進入Resources。 Vapor的項目佈局並非一成不變,但目前規則似乎是前者用於Swift文件,後者用於輔助文件。