简体   繁体   中英

Get files from Jar which is on the repository without downloading the whole Jar from Java

I would like to access the jar file on the repository, search inside it for the certain files, retrieve those files and store them on my hard disc. I don't want to download the whole jar and then to search for it.

So let's assume I have the address of the Jar. Can someone provide me with the code for the rest of the problem?

 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) {
    }
}

So, in upper code, how can I save the file I found(the last if) into directory.

Assuming that by "repository", you mean a Maven repository, then i'm afraid this can't be done. Maven repositories let you download artifacts, like jar files, but won't look inside them for you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM