我有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来创建它)

最佳答案

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

另外,您可以使用其他类型的inputStream传递到JarInputStream中。

关于java - 从流中读取JarEntry,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18481904/

10-08 21:09