gpt4 book ai didi

java - 在测试和生产代码中获取一致的资源文件夹路径

转载 作者:行者123 更新时间:2023-12-02 08:20:34 25 4
gpt4 key购买 nike

以下代码将解码一个 Base64 字符串并将其保存到 resources/images 文件夹下的文件中。

private final static String IMAGE_FOLDER = new File("resources/images").getAbsoluteFile().getAbsolutePath();

public static String decodeBase64AndSaveImage(String data) throws IOException, BadRequestException {
try {
if (data == null) {
return null;
}
String base64Image = data.split(",")[1];
byte[] imageBytes = DatatypeConverter.parseBase64Binary(base64Image);
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageBytes));
String imageId = generateRandomKey(15);
File imageFile = new File(IMAGE_FOLDER + File.separator + imageId);
ImageIO.write(img, "png", imageFile);
return imageId;
} catch (IllegalArgumentException e) {
throw new BadRequestException("Bad image data");
}
}

images 文件夹位于 /home/user/workspace/myproject/src/main/resources/images 下,但是当我运行测试时, IMAGE_FOLDER/home/user/workspace/myproject/resources/images

我可以理解,在生产环境中不再有 src/main 文件夹。但是如何在生产和测试环境中采用一致的方法呢?

注1

测试失败

注2

我尝试了ClassLoader方法:

Classname.class.getClass().getResource("filename.png") 但它返回 null。

最佳答案

由于您的应用程序写入数据,因此我建议在您的项目代码外部维护包含目标目录路径的变量。我建议使用环境变量。如果路径存储在环境变量 IMG_DIR 中,您可以使用 System.getenv("IMG_DIR") 从 Java 代码访问此信息。将此配置项放在 JAR 外部使得将 JAR 移动到任何执行环境变得非常简单。

关于java - 在测试和生产代码中获取一致的资源文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com