在Go AppEngine中读取文件的正确方法

Kok*_*zzu 3 google-app-engine go

使用Google AppEngine(Go)读取文件的正确方法是什么?

在Java中我读过context.getResourceAsStream,有没有相同的功能呢?

icz*_*cza 6

您可以使用与计算机上运行的Go应用程序中的文件相同的方式读取App Engine上的文件.

要注意的一些事项:

  • 您应该使用相对文件路径而不是绝对路径.工作目录是应用程序的根文件夹(app.yaml文件所在的位置).

  • 只有作为应用程序文件的文件才能被Go代码读取,因此如果您想从Go代码中读取文件,则该文件不能与静态文件模式匹配(或者如果它也必须作为静态文件提供,则application_readable选项必须在包含/应用于文件的静态文件处理程序中指定,详细信息).

后者在应用程序配置页面,章节静态文件处理程序中详细说明.引用相关部分:

为了提高效率,App Engine与应用程序文件分开存储和提供静态文件.静态文件在应用程序的文件系统中不可用.如果您有需要由应用程序代码读取的数据文件,则数据文件必须是应用程序文件,并且不能与静态文件模式匹配.

因此,假设data您的应用程序根目录(旁边app.yaml)中有一个文件夹,并且其中包含一个文件list.txt.您可以阅读如下内容:

if content, err := ioutil.Readfile("data/list.txt"); err != nil {
    // Failed to read file, handle error
} else {
    // Success, do something with content
}
Run Code Online (Sandbox Code Playgroud)

或者如果你想/需要一个io.Reader(与许多其他一起os.File实现io.Reader):

f, err := os.Open("data/list.txt") // For read access.
if err != nil {
    // Failed to open file, log / handle error
    return
}
defer f.Close()
// Here you may read from f
Run Code Online (Sandbox Code Playgroud)

相关问题:

Google App Engine Golang没有这样的文件或目录

静态页面在Google App Engine中返回404

如何在Google应用引擎中存储我的服务器的私钥?