2013-08-28 73 views
1

我有jar作爲輸入流。我想直接從流中讀取JarEntry。 我沒有jar文件,我不想創建臨時jar文件。從流中讀取JarEntry

我試圖這樣的代碼:

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

您可以循環讀取方法並讀入固定大小的數組,並將剛讀取的字節追加到最終存儲中。

或者,您可以使用不同類型的inputStream傳入您的JarInputStream。