Package org.apache.lucene.codecs

# Class StoredFieldsWriter

java.lang.Object
org.apache.lucene.codecs.StoredFieldsWriter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Accountable`

Direct Known Subclasses:
  `Lucene90CompressingStoredFieldsWriter`

public abstract class StoredFieldsWriter extends Object implements Closeable, Accountable
Codec API for writing stored fields:

1. For every document, `startDocument()` is called, informing the Codec that a new document has started.
2. `writeField` is called for each field in the document.
3. After all documents have been written, `finish(int)` is called for verification/sanity-checks.
4. Finally the writer is closed (`close()`)

WARNING: This API is experimental and might change in incompatible ways in the next release.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`StoredFieldsWriter.MergeVisitor`
A visitor that adds every field it sees.

## Field Summary

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

`NULL_ACCOUNTABLE`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`StoredFieldsWriter()`
Sole constructor.

## Method Summary

Modifier and Type
Method
Description
`abstract void`
`close()`
`abstract void`
`finish(int numDocs)`
Called before `close()`, passing in the number of documents that were written.
`void`
`finishDocument()`
Called when a document and all its fields have been added.
`int`
`merge(MergeState mergeState)`
Merges in the stored fields from the readers in `mergeState`.
`abstract void`
`startDocument()`
Called before writing the stored fields of the document.
`abstract void`
`writeField(FieldInfo info, double value)`
Writes a stored double value.
`abstract void`
`writeField(FieldInfo info, float value)`
Writes a stored float value.
`abstract void`
`writeField(FieldInfo info, int value)`
Writes a stored int value.
`abstract void`
`writeField(FieldInfo info, long value)`
Writes a stored long value.
`abstract void`
`writeField(FieldInfo info, String value)`
Writes a stored String value.
`void`
`writeField(FieldInfo info, DataInput value, int length)`
Writes a stored binary value from a `DataInput` and a `length`.
`abstract void`
`writeField(FieldInfo info, BytesRef value)`
Writes a stored binary value.

### 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, ramBytesUsed`

## Constructor Details

### StoredFieldsWriter

protected StoredFieldsWriter()
Sole constructor. (For invocation by subclass constructors, typically implicit.)

## Method Details

### startDocument

public abstract void startDocument() throws IOException
Called before writing the stored fields of the document. `writeField` will be called for each stored field. Note that this is called even if the document has no stored fields.

Throws:
  `IOException`

### finishDocument

public void finishDocument() throws IOException
Called when a document and all its fields have been added.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, int value) throws IOException
Writes a stored int value.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, long value) throws IOException
Writes a stored long value.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, float value) throws IOException
Writes a stored float value.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, double value) throws IOException
Writes a stored double value.

Throws:
  `IOException`

### writeField

public void writeField(FieldInfo info, DataInput value, int length) throws IOException
Writes a stored binary value from a `DataInput` and a `length`.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, BytesRef value) throws IOException
Writes a stored binary value.

Throws:
  `IOException`

### writeField

public abstract void writeField(FieldInfo info, String value) throws IOException
Writes a stored String value.

Throws:
  `IOException`

### finish

public abstract void finish(int numDocs) throws IOException
Called before `close()`, passing in the number of documents that were written. Note that this is intentionally redundant (equivalent to the number of calls to `startDocument()`, but a Codec should check that this is the case to detect the JRE bug described in LUCENE-1282.

Throws:
  `IOException`

### merge

public int merge(MergeState mergeState) throws IOException
Merges in the stored fields from the readers in `mergeState`. The default implementation skips over deleted documents, and uses `startDocument()`, `writeField`, and `finish(int)`, returning the number of documents that were written. Implementations can override this method for more sophisticated merging (bulk-byte copying, etc).

Throws:
  `IOException`

### close

public abstract void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Throws:
  `IOException`