我的项目根目录中有一个资源文件夹/包,我"不"想加载某个文件.如果我想加载某个文件,我会使用类.getResourceAsStream和我会很好!!我实际上想做的是在resources文件夹中加载一个"文件夹",循环该文件夹中的文件,并获得每个文件的流,然后读取内容...假设文件名在运行前未确定...我该怎么办?有没有办法获得jar文件中文件夹中的文件列表?

推荐答案

最后,我找到了解决方案:

final String path = "sample/folder";
final File jarFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());

if(jarFile.isFile()) {  // Run with JAR file
    final JarFile jar = new JarFile(jarFile);
    final Enumeration<JarEntry> entries = jar.entries(); //gives ALL entries in jar
    while(entries.hasMoreElements()) {
        final String name = entries.nextElement().getName();
        if (name.startsWith(path + "/")) { //filter according to the path
            System.out.println(name);
        }
    }
    jar.close();
} else { // Run with IDE
    final URL url = Launcher.class.getResource("/" + path);
    if (url != null) {
        try {
            final File apps = new File(url.toURI());
            for (File app : apps.listFiles()) {
                System.out.println(app);
            }
        } catch (URISyntaxException ex) {
            // never happens
        }
    }
}

第二个块只在IDE上运行应用程序时有效(不使用jar文件),如果不喜欢,可以删除它.

Java相关问答推荐

在未跨多次运行重写过go 的数据的情况下将数据写入到SON文件时遇到问题(使用Jackson)

我想知道为什么我的控制器给出嵌套响应

验证使用GCP生成的非对称密钥时签名不起作用

Spring安全实现多个SQL表身份验证

转换为Biggram

如何使用jooq generator将表名和列名映射为人类可读的?

将成为一个比较者.比较…在现代Java中,编译器会对`CompareTo`方法进行优化吗?

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

CompleteableFuture是否运行在不同的内核上?

当Volatile关键字真的是必要的时候?

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

在执行流和相关操作时,使用Java泛型为2个方法执行相同的操作,但对象不同

Java.lang.invke.LambdaConversionException:实例方法InvokeVirtual的参数数量不正确

通过Java列表中的某些字段搜索值

如何在字节数组中反转UTF-8编码?

Maven-Dependency-Plugin 3.6.+开始查找在依赖关系:分析目标期间找到的新的使用的未声明依赖关系

整数->;双取消框,但双->;int不';t开箱.为什么?

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

AspectJ编织外部依赖代码,重新打包jar并强制依赖用户使用它