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

3

如何在Google AppEngine(Go)中正确读取文件?

在Java中,我知道有context.getResourceAsStream函数,是否有类似的函数可以使用?

1个回答

7
您可以像在电脑上运行Go应用程序时那样从文件中读取App Engine上的文件。
请记住以下一些事项:
- 您应该使用相对文件路径而不是绝对路径。工作目录是您的应用程序的根文件夹(即app.yaml文件所在的位置)。 - 只有被应用程序识别为文件的文件才能被Go代码读取,因此如果您想从Go代码读取文件,则该文件不能被静态文件模式匹配到(或者如果它还必须作为静态文件可用,则必须在包含/应用于文件的静态文件处理程序中指定application_readable选项,详情请参见这里)。
后面的内容在Application configuration页面Section Static file handlers中详细描述了后一个问题。引用其中相关部分:
“为了提高效率,App Engine将静态文件与应用程序文件分开存储和提供。静态文件在应用程序文件系统中不可用。如果您有需要由应用程序代码读取的数据文件,则这些数据文件必须是应用程序文件,并且不能与静态文件模式匹配。”
因此,假设您的应用程序的根目录(紧挨着app.yaml)下有一个名为data的文件夹和其中的一个名为list.txt的文件,您可以按照以下方式读取它的内容:
if content, err := ioutil.Readfile("data/list.txt"); err != nil {
    // Failed to read file, handle error
} else {
    // Success, do something with content
}

如果您需要使用 io.Readeros.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

相关问题:

Google App Engine Golang 出现“无此文件或目录”错误

Google App Engine 静态页面返回404错误

如何在Google App Engine中存储服务器的私钥?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接