在spring boot mvc应用程序中,我正在尝试生成文件并将其存储在资源目录下的子文件夹中,以便我可以提供下载链接,以便从UI下载。 我能够使用this.getClass()。getClassLoader()。getResource(“”)来获取资源目录路径,如果使用 mvn clean install spring-boot:run 但是如果使用java -jar **。jar运行jar文件则会抛出错误。
即使我决定使用外部Tomcat而不使用任何java类代码更改,我如何能够同时处理这些事情以及它应该工作。 顺便说一句,我试图找出服务层中的路径,它的纯java类不能看到servlet。
答案 0 :(得分:0)
请记住,编译和打包应用程序的结果是.jar或.war文件。
应用程序服务器通常会扩展.war文件,但不是必须这样做。
因此,您应该假设在运行时没有“资源目录”。
安全的做法是自己创建一个目录(不是progamatically),并将该目录的路径放在一个环境变量中,供应用程序读取。
答案 1 :(得分:0)
我已经为Spring-Boot和Java 8提供了一个可行的解决方案(IDE /本地maven和java -jar
)版本:
final String extension = ".txt";
final String resourceLocation = "/cool/folder/**/*" + extension ;
final PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
final List<String> txtResourceList = new ArrayList<>();
final Resource[] resources = resolver.getResources( resourceLocation );
for ( Resource resource : resources ) {
final String txtFileContent = new BufferedReader(
new InputStreamReader( resource.getInputStream(),
StandardCharsets.UTF_8 ) )
.lines().collect( Collectors.joining( " " ) );
txtResourceList .add( txtFileContent );
}
如果有什么不清楚,请告诉我。