swift - Heroku:如何读取文件?

标签 swift file heroku file-io vapor

我有以下项目布局(契约(Contract)):

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 无法访问源代码树.我怎样才能解决这个问题并在运行时读取文件?

最佳答案

编译后使用drop.workdir获取项目目录。

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

请注意,我还将您的文件从 Sources 移到了 Resources 中。 Vapor 的项目布局并不是一成不变的,但目前的规则似乎是前者用于 Swift 文件,后者用于辅助文件。

关于swift - Heroku:如何读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41332945/

相关文章:

c - 如何使用 C 语言中的 fscanf() 读取 .gro 文件?

c++ - 按字符读取文件 C++

r - 如何写入 R 中的 .txt 文件?

node.js - Heroku H99 错误,服务器无法解析

ruby-on-rails - 什么是数据库连接限制以及 ActiveRecord 如何处理它?

ios - ViewController 在 didSelectRowAtIndexPath 中缓慢呈现

swift - 如何在 Swift 3 中画一条线

swift - 跟踪 NSCell 的位置变化

node.js - 如何使用 json-server 部署reactJS应用程序

swift - 如何在 SwiftUI 之间切换屏幕