23

I have a folder and want to load all txt files to a list using Spring and wildcards:

By annotation I could do the following:

@Value("classpath*:../../dir/*.txt")
private Resource[] files;

But how can I achieve the same using spring programmatically?

Eugene
  • 117,005
  • 15
  • 201
  • 306
membersound
  • 81,582
  • 193
  • 585
  • 1,120

3 Answers3

45

Use ResourceLoader and ResourcePatternUtils:

class Foobar {
    private final ResourceLoader resourceLoader;

    public Foobar(ResourceLoader resourceLoader) {
        this.resourceLoader = resourceLoader;
    }

    Resource[] loadResources(String pattern) throws IOException {
        return ResourcePatternUtils.getResourcePatternResolver(resourceLoader).getResources(pattern);
    }
}

and use it like:

Resource[] resources = foobar.loadResources("classpath*:../../dir/*.txt");
Maciej Walkowiak
  • 12,372
  • 59
  • 63
9

If you are using Spring

@Autowired
private ApplicationContext applicationContext;

public void loadResources() {
    try {
        Resource[] resources = applicationContext.getResources("file:C:/XYZ/*_vru_*");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
kukis
  • 4,489
  • 6
  • 27
  • 50
Baji Shaik
  • 1,022
  • 2
  • 10
  • 14
0

applicationContext.getResources("classpath:/*.extension"); works for me

Pijush
  • 417
  • 5
  • 3