java - GCP 云功能可以访问(写入)/src/main/resources 吗?
问题描述
我有一个触发 jar 的云函数,它开始良好,直到我尝试在 /src/main/resources 中写入文件,我可以在其中读取,在我尝试编写程序失败并抛出异常的那一刻。
那么我可以直接写入 /src/main/resources 还是必须实现 Cloud Storage 库?
参考:
- https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-java
- https://cloud.google.com/appengine/docs/standard/java11/using-cloud-storage
- 如何从 GCP Cloud Function 中的 Maven 资源文件夹中读取文件?
谢谢大家。
解决方案
没有 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 等等),并且唯一的其中一个共同点是“用户主目录中的某个子目录”。
特别是对于云,您必须实现云存储库;你的谷歌云应用程序运行的实际底层操作系统是短暂的(它可能会消失在你身上,并且它的资源被扔进了虚空,如果你的应用程序被编写成这样是一件坏事,你的应用程序就坏了)。
推荐阅读
- android - 什么是 parcelable 以及为什么它用于 BluetoothDevice.EXTRA_DEVICE?
- python - 如何将 py 制作的 exe 文件从我的电脑更新给我发送给的人?
- reactjs - React:使用异步数据从父组件更新子组件状态
- python - 如何在 Python 中使用正则表达式获取字符串的一部分
- python - 在 pygame 中重置板给出属性错误
- c# - 写入另一个我读取数据包的程序的 TCP 流
- javascript - React & Redux - TypeError 状态不可迭代
- python - 如何制作这个 Python 模式?
- javascript - ws.write = (result.join(',') + '\n'); && TypeError: result.join is not a function ...我如何解决此类型错误
- c - C lang 根据每个字符串中的辅音数量比较一个二维字符串数组