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
`final class`
`PagedBytes.PagedBytesDataInput`
Input that transparently iterates over pages
`final class`
`PagedBytes.PagedBytesDataOutput`
Output that transparently spills to new pages as necessary
`static final 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

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 Details

### PagedBytes

public PagedBytes(int blockBits)
1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled

## Method Details

### 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.