Получить файлы из Jar, который находится в хранилище, не загружая весь Jar из Java - PullRequest
0 голосов
/ 10 февраля 2012

Я хотел бы получить доступ к файлу jar в хранилище, найти в нем определенные файлы, получить эти файлы и сохранить их на моем жестком диске. Я не хочу загружать всю банку и затем искать ее.

Итак, давайте предположим, что у меня есть адрес банки. Может ли кто-нибудь предоставить мне код для остальной части проблемы?

 public void searchInsideJar(final String jarUrl, final String artifactId,
        final String artifactVersion) {
    InputStream is = null;
    OutputStream outStream = null;
    JarInputStream jis = null;
    int i = 1;
    try {
        String strDirectory = "C:/Users/ilijab/" + artifactId   +artifactVersion;

        // Create one directory
        boolean success = (new File(strDirectory)).mkdir();
        if (success) {
            System.out.println("Directory: " + strDirectory + " created");
        }

        is = new URL(jarUrl).openStream();
        jis = new JarInputStream(is);

        while (true) {
            JarEntry ent = jis.getNextJarEntry();
            if (ent == null) {
                break;
            }
            if (ent.isDirectory()) {
                continue;
            }
            if (ent.getName().contains("someFile")) {
                outStream = new BufferedOutputStream(new FileOutputStream(
                        strDirectory + "\\" + "someFile" + i));
                while(ent.)
                System.out.println("**************************************************************");
                System.out.println(i);
                i++;
            }
        }
    } catch (Exception ex) {
    }
}

Итак, в верхнем коде, как я могу сохранить найденный файл (последний, если) в каталоге.

1 Ответ

1 голос
/ 10 февраля 2012

Предполагая, что под "хранилищем" вы подразумеваете хранилище Maven, я боюсь, что это невозможно сделать.Репозитории Maven позволяют загружать артефакты, такие как файлы JAR, но не будут искать их внутри вас.

...