使用GoogleAppEngine(Go)读取文件的正确方法是什么?
在Java中,我读到了context.getResourceAsStream,是否有等效的功能?
context.getResourceAsStream
您可以从App Engine上的文件中读取文件,也可以从计算机上运行的Go应用程序中的文件中读取文件。
注意事项:
您应该使用 相对 文件路径,而不是绝对路径。工作目录是应用程序的根文件夹(app.yaml文件所在的位置)。
app.yaml
Go代码只能读取属于 应用程序 文件的文件,因此,如果要从Go代码读取文件,则该文件不得与静态文件模式匹配(或者如果它也必须作为静态文件提供,则为application_readable选件)必须在包含/应用于文件的静态文件处理程序中指定,详细信息。
application_readable
后者在“ 应用程序配置”页面的“ 静态文件处理程序”部分中进行了详细说明。引用相关部分:
为了提高效率,App Engine与应用程序文件分开存储和提供静态文件。静态文件在应用程序的文件系统中不可用。如果您有需要由应用程序代码读取的数据文件,则这些数据文件必须是应用程序文件,并且不能与静态文件模式匹配。
因此,假设您data在应用的根目录(位于旁边app.yaml)中有一个文件夹,并且其中有一个文件list.txt。您可以这样阅读其内容:
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.Reader(与许多其他os.File实现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