读取特定包中的文件内容

时间:2014-08-15 09:48:34

标签: java inputstream packages

我很惊讶我无法在stackoverflow上找到这个问题的答案,但请原谅我是否重复。

我的Web应用程序中有一些文本文件位于包中。我知道包的名称是什么,但我不一定知道这些文件的名称。我希望能够读取此包中每个文本文件的内容。

我知道我可以使用getClass().getResourceAsStream("filename.txt")阅读单个文件的内容,但正如我所说,我不必知道文件的名称,只知道它们所在的软件包。

因此,给定包名称,如何获取该包中包含的所有文件的内容?

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/12007322/1350762添加我自己的答案作为社区维基。

您可以使用Spring提供的PathMatchingResourcePatternResolver

public class SpringResourceLoader {

    public static void main(String[] args) throws IOException {
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

        // Ant-style path matching
        Resource[] resources = resolver.getResources("/com/myapp/some/package/*");

        for (Resource resource : resources) {
            InputStream is = resource.getInputStream();
            ...
        }
    }
}

将此添加到您的maven依赖项(如果使用maven):

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>