Java 以编程方式从jar中查找具有特定扩展名的所有资源

Java 以编程方式从jar中查找具有特定扩展名的所有资源,java,resources,jar,yaml,application-resource,Java,Resources,Jar,Yaml,Application Resource,我有一个函数,它获取某种类型的对象作为它的参数。我必须从该位置获取扩展名为.yml的所有资源文件 如何操作?您可以使用FileFilter过滤.yaml文件。post给出了一个如何实现和使用一个jar的示例。我觉得这个问题的措辞有点不清楚,但如果我理解正确,您希望从给定的jar中提取所有扩展名为.yml的文件 如果是这种情况,您可以简单地从已知jar文件路径实例化java.util.jar文件并使用它。此方法返回JarEntries的枚举,您可以对其进行迭代并验证其名称是否以“.yml”结尾。您

我有一个函数,它获取某种类型的对象作为它的参数。我必须从该位置获取扩展名为
.yml
的所有资源文件


如何操作?

您可以使用
FileFilter
过滤
.yaml
文件。post给出了一个如何实现和使用一个jar的示例。

我觉得这个问题的措辞有点不清楚,但如果我理解正确,您希望从给定的jar中提取所有扩展名为.yml的文件


如果是这种情况,您可以简单地从已知jar文件路径实例化java.util.jar文件并使用它。此方法返回JarEntries的枚举,您可以对其进行迭代并验证其名称是否以“.yml”结尾。

您可以使用此代码

JarFile jarFile = new JarFile("my.jar");

    for(Enumeration<JarEntry> em = jarFile.entries(); em.hasMoreElements();) {  
        String s= em.nextElement().toString();

        if(s.startsWith(("path/to/resource/directory/"))){
            ZipEntry entry = jarFile.getEntry(s);

            String fileName = s.substring(s.lastIndexOf("/")+1, s.length());
            if(fileName.endsWith(".yml")){
                InputStream inStream= jarFile.getInputStream(entry);
                OutputStream out = new FileOutputStream(fileName);
                int c;
                while ((c = inStream.read()) != -1){
                    out.write(c);
                }
                inStream.close();
                out.close();

            }
        }
    }  
    jarFile.close();
JarFile-JarFile=newjarfile(“my.jar”);
对于(枚举em=jarFile.entries();em.hasMoreElements();){
字符串s=em.nextElement().toString();
if(s.startsWith((“path/to/resource/directory/”){
ZipEntry entry=jarFile.getEntry;
字符串文件名=s.substring(s.lastIndexOf(“/”)+1,s.length();
if(fileName.endsWith(“.yml”)){
InputStream inStream=jarFile.getInputStream(条目);
OutputStream out=新文件OutputStream(文件名);
INTC;
而((c=inStream.read())!=-1){
写出(c);
}
流内关闭();
out.close();
}
}
}  
jarFile.close();

您想获取extn为.yml的jar中的文件列表吗?谁将
.yml
放在jar中?让他们在Jar中的已知位置包含一个文件列表。e、 g.
resources/yml list.txt
A
FileFilter
不适用于Jar中的资源。它们是
JarEntry
而不是
File
实例。