クラス ZipContent

java.lang.ObjectSE
org.springframework.boot.loader.zip.ZipContent
実装されているすべてのインターフェース:
CloseableSE, AutoCloseableSE

public final class ZipContent extends ObjectSE implements CloseableSE
通常の 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
  • メソッドの詳細

    • getKind

      public ZipContent.Kind getKind()
      読み込まれたコンテンツの種類を返します。
      戻り値:
      コンテンツの種類
      導入:
      3.2.2
    • openRawZipData

      public CloseableDataBlock openRawZipData() throws IOExceptionSE
      生の zip データを含む DataBlock を開きます。コンテナー zip ファイルの場合、zip ファイルの先頭に追加のバイトが許可されるため、元のファイルよりも小さくなる可能性があります。ネストされた zip ファイルの場合、ネストされた zip の内容のみになります。

      ネストされたディレクトリ zip ファイルの場合、関連するコンテンツのみを含む仮想データブロックが作成されます。

      リソースを解放するには、データブロックの close() メソッドを明示的に呼び出すか、try-with-resources によって呼び出す必要があります。

      close() が呼び出された後は、返されたデータブロックにアクセスしないでください。

      戻り値:
      郵便番号データ
      例外:
      IOExceptionSE - I/O エラー時
    • size

      public int size()
      ZIP ファイル内のエントリの数を返します。
      戻り値:
      エントリ数
    • getComment

      public StringSE getComment()
      存在する場合は、zip コメントを返します。
      戻り値:
      コメントまたは null
    • getEntry

      public ZipContent.Entry getEntry(CharSequenceSE name)
      指定された名前のエントリがあればそれを返します。
      パラメーター:
      name - 検索するエントリの名前
      戻り値:
      エントリまたは null
    • getEntry

      public ZipContent.Entry getEntry(CharSequenceSE namePrefix, CharSequenceSE name)
      指定された名前のエントリがあればそれを返します。
      パラメーター:
      namePrefix - 名前のオプションの接頭辞
      name - 検索するエントリの名前
      戻り値:
      エントリまたは null
    • hasEntry

      public boolean hasEntry(CharSequenceSE namePrefix, CharSequenceSE name)
      指定された名前のエントリが存在するかどうかを返します。
      パラメーター:
      namePrefix - 名前のオプションの接頭辞
      name - 検索するエントリの名前
      戻り値:
      エントリまたは null
    • getEntry

      public ZipContent.Entry getEntry(int index)
      指定されたインデックスのエントリを返します。
      パラメーター:
      index - エントリインデックス
      戻り値:
      エントリ
      例外:
      IndexOutOfBoundsExceptionSE - インデックスが範囲外の場合
    • getInfo

      public <I> I getInfo(ClassSE<I> type, FunctionSE<ZipContent, I> function)
      ZipContent に基づいて情報を取得または計算します。
      型パラメーター:
      I - 取得または計算する情報の種類
      パラメーター:
      type - 取得または計算する情報の種類
      function - 情報を計算するために使用される関数
      戻り値:
      計算された情報または既存の情報
    • hasJarSignatureFile

      public boolean hasJarSignatureFile()
      この zip に jar 署名ファイル (META-INF/*.DSA) が含まれている場合は、true を返します。
      戻り値:
      zip に jar 署名ファイルが含まれている場合
    • close

      public void close() throws IOExceptionSE
      この jar ファイルを閉じて、これが最後の参照であった場合は基になるファイルを解放します。
      次で指定:
      インターフェース AutoCloseableSEclose 
      次で指定:
      インターフェース CloseableSEclose 
      例外:
      IOExceptionSE
      関連事項:
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString 
    • open

      public static ZipContent open(PathSE path) throws IOExceptionSE
      指定されたパスから ZipContent を開きます。呼び出し元によって、結果として得られる ZipContentclosed である必要があります
      パラメーター:
      path - zip パス
      戻り値:
      ZipContent インスタンス
      例外:
      IOExceptionSE - I/O エラー時
    • open

      public static ZipContent open(PathSE path, StringSE nestedEntryName) throws IOExceptionSE
      指定されたパスからネストされた ZipContent を開きます。結果として得られる ZipContent は、呼び出し元によって closed にする必要があります
      パラメーター:
      path - zip パス
      nestedEntryName - 開くネストされたエントリ名
      戻り値:
      ZipContent インスタンス
      例外:
      IOExceptionSE - I/O エラー時