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

read メソッドをループして固定サイズの配列に読み込み、読み取ったばかりのバイトを最終的なストレージに追加することができます。

あるいは、JarInputStream に渡される別のタイプの inputStream を使用できます。

于 2013-08-28T07:53:55.333 に答える