问题:docker部署springboot项目,获取不到项目目录或者获取到的项目目录不准确,导致resources下的文件也读取不到。linux机器也不能放文件,所以拿不到文件。
解决:创建一个临时文件夹,把resources下的文件写到临时目录,然后读取临时目录的数据就可以了。
代码:
// 读取resources目录下的文件
Resource resource = resourceLoader.getResource("classpath:" + msgAuditLibPath);
// 创建临时文件
File tempFile = File.createTempFile("mylibrary", "." + StrUtil.subAfter(msgAuditLibPath, ".", true));
// 将库文件拷贝到临时文件中
try (InputStream in = resource.getInputStream();
OutputStream out = Files.newOutputStream(tempFile.toPath())) {
IOUtils.copy(in, out);
}
// 获取新的文件目录
Stirng newFilePath = tempFile.getAbsolutePath();