我有jar作为输入流。我想直接从流中读取JarEntry。 我没有jar文件,我也不想创建temporar 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来创建它)
答案 0 :(得分:0)
您可以循环读取方法并读入固定大小的数组,将刚刚读取的字节附加到最终存储中。
或者,您可以使用传递到JarInputStream中的其他类型inputStream。