Найти весь ресурс с конкретным расширением из 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 файлы. Этот пост дает пример того, как реализовать и использовать один.

Другие вопросы по тегам