从存储库中的 Jar 获取文件,而无需从 Java 下载整个 Jar

发布于 2025-01-04 14:02:36 字数 1440 浏览 2 评论 0原文

我想访问存储库中的 jar 文件,在其中搜索某些文件,检索这些文件并将它们存储在我的硬盘上。我不想下载整个罐子然后再搜索它。

假设我有 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) {
    }
}

那么,在上面的代码中,如何将我找到的文件(最后一个 if)保存到目录中。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

避讳 2025-01-11 14:02:36

假设“存储库”指的是 Maven 存储库,那么恐怕这是无法完成的。 Maven 存储库允许您下载工件,例如 jar 文件,但不会为您查看它们的内部情况。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文