4

Java では、 new ZipFile(new File("xxx.zip")); を実行する必要があります。zipファイルを解凍します。

ここで、内容が zip ファイルであるバイト配列を取得します。ファイルではなくデータベースからこのバイト配列を取得します。この「バイト配列フ​​ァイル」を解凍したいのですが、バイト配列または文字列の ZipFile コンストラクターがありません (ファイル パスではなくコンテンツを意味します)。

解決策はありますか?(もちろん、このバイト配列を実際のファイルに書き込んで、再度メモリに読み込みたくはありません。)

ありがとう!

4

2 に答える 2

6

バイト配列から作成された ZipInputStream 内で ByteArrayInputStream を使用する

byte[] ba;

InputStream is = new ByteArrayInputStream(ba);
InputStream zis = new ZipInputStream(is);

圧縮されていないコンテンツを読み取るには、zis を使用します。

于 2012-12-28T16:40:35.737 に答える
0

の実装でZipFileは、ファイルである必要があります。例えば、メモリマッピングを使用することができる。一般に、アーカイブは巨大である可能性があると想定されています。

@Perception が言及しているZipInputStreamように、ストリームを順次読み取るために使用できます。サードパーティのライブラリを置き換えて利用できる場合がありますZipFile

于 2012-12-28T16:38:51.067 に答える