Package org.apache.lucene.util

## Class PagedBytes

- java.lang.Object
- - org.apache.lucene.util.PagedBytes

- All Implemented Interfaces:
    `Accountable`

      public final class PagedBytes
      extends Object
      implements Accountable

  Represents a logical byte[] as a series of pages. You can write-once into the logical byte[] (append only), using copy, and then retrieve slices (BytesRef) into it using fill.
  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `PagedBytes.PagedBytesDataInput` | Input that transparently iterates over pages
    `class` | `PagedBytes.PagedBytesDataOutput` | Output that transparently spills to new pages as necessary
    `static class` | `PagedBytes.Reader` | Provides methods to read BytesRefs from a frozen PagedBytes.

  - ### Field Summary

    - ### Fields inherited from interface org.apache.lucene.util.Accountable

      `NULL_ACCOUNTABLE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PagedBytes​(int blockBits)` | 1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `copy​(IndexInput in, long byteCount)` | Read this many bytes from in
    `void` | `copy​(BytesRef bytes, BytesRef out)` | Copy BytesRef in, setting BytesRef out to the result.
    `long` | `copyUsingLengthPrefix​(BytesRef bytes)` | Copy bytes in, writing the length as a 1 or 2 byte vInt prefix.
    `PagedBytes.Reader` | `freeze​(boolean trim)` | Commits final byte[], trimming it if necessary and if trim=true
    `PagedBytes.PagedBytesDataInput` | `getDataInput()` | Returns a DataInput to read values from this PagedBytes instance.
    `PagedBytes.PagedBytesDataOutput` | `getDataOutput()` | Returns a DataOutput that you may use to write into this PagedBytes instance.
    `long` | `getPointer()` |
    `long` | `ramBytesUsed()` | Return the memory usage of this object in bytes.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.lucene.util.Accountable

      `getChildResources`

- - ### Constructor Detail

    - #### PagedBytes

          public PagedBytes​(int blockBits)

      1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled

  - ### Method Detail

    - #### copy

          public void copy​(IndexInput in,
                           long byteCount)
                    throws IOException

      Read this many bytes from in
      Throws:
        `IOException`

    - #### copy

          public void copy​(BytesRef bytes,
                           BytesRef out)

      Copy BytesRef in, setting BytesRef out to the result. Do not use this if you will use freeze(true). This only supports bytes.length <= blockSize

    - #### freeze

          public PagedBytes.Reader freeze​(boolean trim)

      Commits final byte[], trimming it if necessary and if trim=true

    - #### getPointer

          public long getPointer()

    - #### ramBytesUsed

          public long ramBytesUsed()

      Description copied from interface: `Accountable`
      Return the memory usage of this object in bytes. Negative values are illegal.
      Specified by:
        `ramBytesUsed` in interface `Accountable`

    - #### copyUsingLengthPrefix

          public long copyUsingLengthPrefix​(BytesRef bytes)

      Copy bytes in, writing the length as a 1 or 2 byte vInt prefix.

    - #### getDataInput

          public PagedBytes.PagedBytesDataInput getDataInput()

      Returns a DataInput to read values from this PagedBytes instance.

    - #### getDataOutput

          public PagedBytes.PagedBytesDataOutput getDataOutput()

      Returns a DataOutput that you may use to write into this PagedBytes instance. If you do this, you should not call the other writing methods (eg, copy); results are undefined.