1

我有 jar 作为输入流。我想直接从流中读取 JarEntry。我没有 jar 文件,也不想创建临时 jar 文件。

我试过这样的代码:

    JarInputStream jis = new JarInputStream(in);
    JarEntry je = null;

    while ((je = jis.getNextJarEntry()) != null)
    {
        byte[] classbytes = new byte[(int) je.getSize()];
        System.out.println("size of array: " + classbytes.length);
        jis.read(classbytes, 0, classbytes.length);
    }

此代码的问题:je.getSize() 返回 -1(这意味着 jarEntry 大小未知)。

1)也许你知道如何解决这个问题?

2) 也许你知道为什么 jarEntry 的大小是未知的?(我使用 Eclipse File>Export>Jar File 来创建它)

4

1 回答 1

0

您可以循环读取方法并读入一个固定大小的数组,将刚刚读取的字节附加到最终存储中。

或者,您可以使用传递给您的 JarInputStream 的不同类型的 inputStream。

于 2013-08-28T07:53:55.333 回答