我有一个函数可以获取某种类型的对象作为参数。我必须从该位置获取所有具有扩展名.yml
的资源文件。
怎么做?
答案 0 :(得分:2)
您可以使用此代码
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();
答案 1 :(得分:0)
您可以使用FileFilter
过滤掉.yaml
个文件。 This帖子举例说明了如何实现和使用一个。
答案 2 :(得分:0)
我觉得这个问题的措辞有点不清楚,但如果我理解正确,你想要从给定的jar中提取所有带.yml文件扩展名的文件。
如果是这种情况,您可以简单地从已知的jar文件路径中实例化java.util.JarFile并使用getEntries()。此方法返回JarEntries的枚举,您可以迭代它并验证它们的名称以“.yml”结尾。