当前位置: 首页 > 面试题库 >

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

范振海
2023-03-14
问题内容

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

在Java中,我读到了context.getResourceAsStream,是否有等效的功能?


问题答案:

您可以从App Engine上的文件中读取文件,也可以从计算机上运行的Go应用程序中的文件中读取文件。

注意事项:

  • 您应该使用 相对 文件路径,而不是绝对路径。工作目录是应用程序的根文件夹(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
}

或者,如果您想要/需要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


 类似资料:
  • 我理解下面的代码可以正常工作。在阅读Python中的while循环文档时,他们说while表达式应该是True或False,这很有意义。 现在,函数返回字符串。那么这个while循环是如何工作的呢?

  • 好的,正如标题所示,我的问题是正确地从python中的windows-1252编码文件中读取输入,并将所述输入插入SQLAlchemy MySql表。 当前系统设置: Windows 7虚拟机,带“罗杰访问控制系统”,输出文件 Ubuntu12.04 LTS虚拟机,带有Windows系统的共享文件夹,因此我可以使用“Python 2.7.3”访问该文件。 现在来看实际问题,对于输入文件,我有一个“

  • 我试图设置cookie来定义用户首选的语言。我通过一个指向助手控制器的链接做到了这一点: /设置区域设置/{locale} 我知道这是正确的,因为如果我这样做: 它显示所选择的正确区域设置。所以下一步是使用中间件实际应用这个选择的语言环境,我把它命名为“设置语言环境”: 但如果我执行 在中间件中,它读取所有加扰的cookie。所以我的问题是为什么它会这样做,我如何从这里正确地读取cookie?

  • 我有以下代码来读取java文件,并打印出行。我通过两种方式实现了它: 使用流: 使用循环: 我被告知这是错误的,使用缓冲读取器是错误地使用了语言的特性。有没有更好的方法,我想知道使用语言功能的正确方法。

  • 这是我在大学的一个项目,一切似乎都很好,除了游戏课,它初始化了游戏。下面是一个片段 之后是一些getter和我要实现的4个方法。这些方法是、、、 我创建了,以便它在此处返回String[]的数组列表: 然后,我想加载一些攻击、敌人和龙,并将它们插入相应的数组列表中。 我在此处应用了: 我这样写它,它接受从返回的ArrayList,并使用开关在ArrayList中的每个String[]中搜索第一个字

  • 问题内容: 我现在使用的代码: 似乎工作正常,但我不确定在将ByteBuffer返回池之前是否需要ByteBuffer。我什至不确定要使用。文档中没有太多关于它的内容。 问题答案: 读取请求正文的一种更简单的方法是将其分派到一个工作线程,该工作线程可以使用。 有两种方法:使用或文档中所示的调度模式。这是使用的示例: 在基本上没有派遣你。