Geo*_*rge 5 java spring java-8
我正在使用 Spring Boot,我想获取资源。
\n\n这是我的目录结构:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80java\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80resources\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80file1.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80file2.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80file3.txt\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80file4.txt\nRun Code Online (Sandbox Code Playgroud)\n\n我正在尝试获取files目录中的资源。这是我为访问这些文件所做的操作:
@Autowired\nprivate ResourceLoader resourceLoader;\n\n...\nStream<Path> walk = Files.walk(Paths.get(resourceLoader.getResource("classpath:files/").getURI()));\nRun Code Online (Sandbox Code Playgroud)\n\n当文件位于target目录中时,它可以在本地运行,但当我从 JAR 文件运行它时,找不到这些文件。我该如何解决?我已经检查过这些文件确实存在于位于BOOT-INF/classes/files.
以下是 maven 如何构建资源并将其复制到 JAR 中(我不希望 .txt 文件被过滤):
\n\n<resources>\n <resource>\n <directory>src/main/resources</directory>\n <filtering>true</filtering>\n <excludes>\n <exclude>**/*.txt</exclude>\n </excludes>\n </resource>\n <resource>\n <directory>src/main/resources</directory>\n <filtering>false</filtering>\n <includes>\n <include>**/*.txt</include>\n </includes>\n </resource>\n</resources>\nRun Code Online (Sandbox Code Playgroud)\n
您可以尝试使用以下代码来读取文件吗?
ResourcePatternResolver resourcePatResolver = new PathMatchingResourcePatternResolver();
Resource[] AllResources = resourcePatResolver.getResources("classpath*:files/*.txt");
for(Resource resource: AllResources) {
InputStream inputStream = resource.getInputStream();
//Process the logic
}
Run Code Online (Sandbox Code Playgroud)
这不是您所编写的代码的确切解决方案,但它将给出有关要阅读的资源的概述。
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |