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

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在Java中,获取当前代码的目录通常可以通过ClassLoader类的getResource()或getResourceAsStream()方法来实现。这些方法会返回一个URL对象,你可以通过这个URL对象来获取文件的输入流,然后通过这个输入流来读取文件的内容。

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

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

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

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

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

  2. 在阿里云函数计算(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";

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

  3. 写在 /tmp 目录下吧。此回答来自钉群阿里函数计算官网客户。