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

    All Methods Instance Methods Abstract Methods Concrete Methods
    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 Detail

    - #### StoredFieldsWriter

          protected StoredFieldsWriter()

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

  - ### Method Detail

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