开发者社区 > 云原生 > Serverless > 正文

阿里函数计算中java 怎么获取当前代码的目录呢?

阿里函数计算中java 怎么获取当前代码的目录呢?我代码就是去获取resource 目录,然后写文件,但是本地执行没问题,放在fc 就报错,提示我目录不对。exception: /code/src/main/resources/1488656870/temp.zip (No such file or directory)。

展开
收起
小小鹿鹿鹿 2023-11-14 22:05:56 61 0
3 条回答
写回答
取消 提交回答
  • 在Java中,获取当前代码的目录通常可以通过ClassLoader类的getResource()或getResourceAsStream()方法来实现。这些方法会返回一个URL对象,你可以通过这个URL对象来获取文件的输入流,然后通过这个输入流来读取文件的内容。

    然而,这种方法在函数计算中可能无法正常工作,因为在函数计算中,你的代码是被打包在一个容器中的,这个容器并没有实际的文件系统。因此,当你尝试通过getResource()或getResourceAsStream()方法来获取文件时,你可能会得到一个空的输入流,或者得到一个错误的文件路径。

    如果你需要在函数计算中使用文件,你可以考虑以下几种方式:

    1. 使用函数计算的内置存储。在函数计算的控制台中,你可以找到“内置存储”选项,你可以在这里上传和下载文件。

    2. 使用OSS。你可以将文件存储在OSS中,然后在函数中通过访问OSS的方式来获取文件。

    3. 使用临时文件。你可以使用Java的File类来创建临时文件,然后将文件的内容写入到临时文件中,然后再从临时文件中读取内容。

    2023-11-15 15:53:23
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在阿里云函数计算(Function Compute, FC)中,由于安全性等原因,默认情况下,JVM 不会将文件系统映射到函数中,因此本地磁盘路径 /code/src/main/resources/1488656870/temp.zip 可能不存在。

    如果您想在 Function Compute 中实现文件操作,可以考虑以下两个方案:

    1. 使用 NAS 或 OSS 进行存储,这是更加可靠的方案,而且能够更好地扩展和备份数据。
    2. 若确实需要访问本地临时文件夹,您可以使用环境变量 TMPDIR 获取默认的临时文件夹路径,例如:
    File dir = new File(System.getenv("TMPDIR"));
    String filePath = dir.getAbsolutePath() + "/temp.zip";
    

    注意:虽然使用这种方式可以获得临时文件夹路径,但是请注意,这样做可能导致安全性和可靠性的降低。建议您尽量使用云存储服务来进行文件操作,以确保数据的安全性与可靠性

    2023-11-15 13:59:04
    赞同 展开评论 打赏
  • 写在 /tmp 目录下吧。此回答来自钉群阿里函数计算官网客户。

    2023-11-14 23:36:39
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载