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, StoredFieldDataInput value)`
  Writes a stored binary value from a `StoredFieldDataInput`.
  `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, StoredFieldDataInput value) throws IOException
    Writes a stored binary value from a `StoredFieldDataInput`.
    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`