Найти весь ресурс с конкретным расширением из jar программно
У меня есть функция, которая получает объект некоторого типа в качестве параметра. Я должен получить все файлы ресурсов, имеющие расширение .yml
из этого места.
Как это сделать?
3 ответа
Решение
Вы можете использовать этот код
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();
Я чувствую, что формулировка вопроса немного неясна, но если я правильно понимаю, вы хотите извлечь все файлы с расширением.yml из данного jar-файла.
Если это так, вы можете просто создать экземпляр java.util.JarFile из известного пути к файлу jar и использовать getEntries (). Этот метод возвращает перечисление JarEntries, которое вы можете перебрать и убедиться, что их имена заканчиваются на ".yml".
Ты можешь использовать FileFilter
отфильтровать .yaml
файлы. Этот пост дает пример того, как реализовать и использовать один.