Попробуйте использовать библиотеку Reflections - узнайте больше об этом здесь .:
POM для последней версии:
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.12</version>
</dependency>
Пример использования it:
Предположим, у вас есть каталог с именем jsonfiles
в каталоге /src/main/resource/
.
Следующий код распечатает содержимое каталога jsonfiles
:
import org.reflections.Reflections;
import org.reflections.scanners.ResourcesScanner;
import org.reflections.util.ConfigurationBuilder;
import org.reflections.util.ClasspathHelper;
import java.util.regex.Pattern;
import java.util.Set;
...
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage("YOUR.PACKAGE.NAME.HERE"))
.setScanners(new ResourcesScanner()));
Set<String> resources = reflections.getResources(Pattern.compile("jsonfiles.*"));
resources.forEach((resource) -> {
System.out.println(resource);
});
Вывод будет примерно таким:
jsonfiles/json_file_one.json
jsonfiles/json_file_two.json
Я проверил это в толстом / убер JAR.
Отказ от ответственности: я не использую Spring - так что если это как-то вызывает вашу проблему, то мое решение может не работать. Но я бы ожидал, что это так.
(Небольшой момент: я замечаю, что в вашем вопросе ваш код определяет буферизованный читатель br
, который вы не используете - вы используете поток ввода in
.)