首页 > 解决方案 > GCP 云功能可以访问(写入)/src/main/resources 吗?

问题描述

我有一个触发 jar 的云函数,它开始良好,直到我尝试在 /src/main/resources 中写入文件,我可以在其中读取,在我尝试编写程序失败并抛出异常的那一刻。

那么我可以直接写入 /src/main/resources 还是必须实现 Cloud Storage 库?

参考:

谢谢大家。

标签: javagoogle-cloud-platformgoogle-cloud-storage

解决方案


没有 Java 代码(无论平台如何)可以写入该“目录”,因为该目录的意义在于这些文件最终位于您的 jar 文件最终所在的相同位置,并且您使用MyClass.class.getResource. 如果你曾经写过new File("src/..."),你就搞砸了('src'?在生产中显然没有'src')。

这种抽象(MyClass.class.getResource和朋友)故意提供没有写任何东西的方法,因为 jar 文件并不意味着是可写的。

在磁盘上存储可变数据的正确位置离您的 jar 文件很远;对于最终用户系统,通常写入System.getProperty("user.home")然后从那里写入一个子目录,例如.yourapp,或者询问用户哪个数据目录是合适的;不同的操作系统有不同的“风味”(linux 想要 /var 或 ~,苹果想要 ~/Library/Application Support 或 /Library/Application Support,windows 到处都是,但可能想要 HOME/My Documents 等等),并且唯一的其中一个共同点是“用户主目录中的某个子目录”。

特别是对于云,您必须实现云存储库;你的谷歌云应用程序运行的实际底层操作系统是短暂的(它可能会消失在你身上,并且它的资源被扔进了虚空,如果你的应用程序被编写成这样是一件坏事,你的应用程序就坏了)。


推荐阅读