Найти весь ресурс с конкретным расширением из jar программно - PullRequest
2 голосов
/ 21 марта 2012

У меня есть функция, которая получает объект некоторого типа в качестве параметра.Я должен получить все файлы ресурсов с расширением .yml из этого места.

Как это сделать?

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

Вы можете использовать этот код

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();
0 голосов
/ 21 марта 2012

Я чувствую, что формулировка вопроса немного неясна, но если я правильно понимаю, вы хотите извлечь все файлы с расширением .yml из заданного фляги.Вы можете просто создать экземпляр java.util.JarFile из известного пути к файлу jar и использовать getEntries () .Этот метод возвращает перечисление JarEntries, которое вы можете перебрать и убедиться, что их имена заканчиваются на «.yml».

0 голосов
/ 21 марта 2012

Вы можете использовать FileFilter для фильтрации .yaml файлов. Этот пост дает пример того, как его реализовать и использовать.

...