クラス ZipContent
java.lang.ObjectSE
org.springframework.boot.loader.zip.ZipContent
- 実装されているすべてのインターフェース:
CloseableSE, AutoCloseableSE
通常の zip ファイルまたはネストされた zip ファイルの内容への生のアクセスを提供します。このクラスは、zip ファイルの低レベルの解析を実行し、そこに含まれる生のエントリデータへのアクセスを提供します。
ZipFileSE とは異なり、この実装では、エントリが圧縮されていない限り、別のファイル内にネストされた zip ファイルからコンテンツを読み込むことができます。 メモリ消費量を削減するために、この実装ではエントリ名のハッシュ、主要ディレクトリのオフセット、元の位置のみを保存します。エントリは内部的に hashCode 順序で保存されるため、バイナリ検索を使用して名前でエントリをすばやく見つけたり、zip ファイルに特定のエントリがないかどうかを判断したりできます。
一般的な Spring Boot アプリケーション JAR の ZipContent には、約 122K を消費する 10,500 エントリの領域が含まれます。
ZipContent の結果はキャッシュされ、一度ロードされると zip コンテンツは変更されないものと想定されます。エントリと文字列はキャッシュされず、アクセスごとに再作成されるため、大量のゴミが発生する可能性があります。
この実装では Cleaner.CleanableSE を使用しないため、ZipContent リソースを解放する際には注意が必要です。close() メソッドは明示的に呼び出すか、try-with-resources で呼び出す必要があります。close は 1 回だけ呼び出すように注意する必要があります。
- 導入:
- 3.2.0
- 作成者:
- Phillip Webb, Andy Wilkinson
ネストされたクラスの要約
ネストされたクラス方法の概要
修飾子と型メソッド説明voidclose()この jar ファイルを閉じて、これが最後の参照であった場合は基になるファイルを解放します。存在する場合は、zip コメントを返します。getEntry(int index) 指定されたインデックスのエントリを返します。getEntry(CharSequenceSE name) 指定された名前のエントリがあればそれを返します。getEntry(CharSequenceSE namePrefix, CharSequenceSE name) 指定された名前のエントリがあればそれを返します。<I> IgetInfo(ClassSE<I> type, FunctionSE<ZipContent, I> function) ZipContentに基づいて情報を取得または計算します。getKind()読み込まれたコンテンツの種類を返します。booleanhasEntry(CharSequenceSE namePrefix, CharSequenceSE name) 指定された名前のエントリが存在するかどうかを返します。booleanこの zip に jar 署名ファイル (META-INF/*.DSA) が含まれている場合は、trueを返します。static ZipContent指定されたパスからZipContentを開きます。static ZipContent指定されたパスからネストされたZipContentを開きます。生の zip データを含むDataBlockを開きます。intsize()ZIP ファイル内のエントリの数を返します。toString()
メソッドの詳細
getKind
openRawZipData
生の zip データを含むDataBlockを開きます。コンテナー zip ファイルの場合、zip ファイルの先頭に追加のバイトが許可されるため、元のファイルよりも小さくなる可能性があります。ネストされた zip ファイルの場合、ネストされた zip の内容のみになります。ネストされたディレクトリ zip ファイルの場合、関連するコンテンツのみを含む仮想データブロックが作成されます。
リソースを解放するには、データブロックの
close()メソッドを明示的に呼び出すか、try-with-resources によって呼び出す必要があります。close()が呼び出された後は、返されたデータブロックにアクセスしないでください。- 戻り値:
- 郵便番号データ
- 例外:
IOExceptionSE- I/O エラー時
size
public int size()ZIP ファイル内のエントリの数を返します。- 戻り値:
- エントリ数
getComment
getEntry
指定された名前のエントリがあればそれを返します。- パラメーター:
name- 検索するエントリの名前- 戻り値:
- エントリまたは
null
getEntry
指定された名前のエントリがあればそれを返します。- パラメーター:
namePrefix- 名前のオプションの接頭辞name- 検索するエントリの名前- 戻り値:
- エントリまたは
null
hasEntry
指定された名前のエントリが存在するかどうかを返します。- パラメーター:
namePrefix- 名前のオプションの接頭辞name- 検索するエントリの名前- 戻り値:
- エントリまたは
null
getEntry
指定されたインデックスのエントリを返します。- パラメーター:
index- エントリインデックス- 戻り値:
- エントリ
- 例外:
IndexOutOfBoundsExceptionSE- インデックスが範囲外の場合
getInfo
ZipContentに基づいて情報を取得または計算します。- 型パラメーター:
I- 取得または計算する情報の種類- パラメーター:
type- 取得または計算する情報の種類function- 情報を計算するために使用される関数- 戻り値:
- 計算された情報または既存の情報
hasJarSignatureFile
public boolean hasJarSignatureFile()この zip に jar 署名ファイル (META-INF/*.DSA) が含まれている場合は、trueを返します。- 戻り値:
- zip に jar 署名ファイルが含まれている場合
close
この jar ファイルを閉じて、これが最後の参照であった場合は基になるファイルを解放します。- 次で指定:
- インターフェース
AutoCloseableSEのclose - 次で指定:
- インターフェース
CloseableSEのclose - 例外:
IOExceptionSE- 関連事項:
toString
open
- パラメーター:
path- zip パス- 戻り値:
ZipContentインスタンス- 例外:
IOExceptionSE- I/O エラー時
open
- パラメーター:
path- zip パスnestedEntryName- 開くネストされたエントリ名- 戻り値:
ZipContentインスタンス- 例外:
IOExceptionSE- I/O エラー時