org.apache.lucene.codecs

## Class StoredFieldsWriter

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

All Implemented Interfaces:
  Closeable, AutoCloseable

Direct Known Subclasses:
  CompressingStoredFieldsWriter, Lucene40StoredFieldsWriter

    public abstract class StoredFieldsWriter
    extends Object
    implements Closeable

Codec API for writing stored fields:

1. For every document, `startDocument(int)` is called, informing the Codec how many fields will be written.
2. `writeField(FieldInfo, IndexableField)` is called for each field in the document.
3. After all documents have been written, `finish(FieldInfos, 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.

### Constructor Summary

Constructors
`protected` `StoredFieldsWriter()` Sole constructor.

### Method Summary

Methods
`abstract void` `abort()` Aborts writing entirely, implementation should remove any partially-written files, etc.
`protected void` `addDocument(Iterable<? extends IndexableField> doc, FieldInfos fieldInfos)` sugar method for startDocument() + writeField() for every stored field in the document
`abstract void` `close()`
`abstract void` `finish(FieldInfos fis, 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(int numStoredFields)` Called before writing the stored fields of the document.
`abstract void` `writeField(FieldInfo info, IndexableField field)` Writes a single stored field.

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

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

### Constructor Detail

#### StoredFieldsWriter

    protected StoredFieldsWriter()

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

### Method Detail

#### startDocument

    public abstract void startDocument(int numStoredFields)
                                throws IOException

Called before writing the stored fields of the document. `writeField(FieldInfo, IndexableField)` will be called `numStoredFields` times. Note that this is called even if the document has no stored fields, in this case `numStoredFields` will be zero.

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,
                  IndexableField field)
                             throws IOException

Writes a single stored field.

Throws:
  `IOException`

#### abort

    public abstract void abort()

Aborts writing entirely, implementation should remove any partially-written files, etc.

#### finish

    public abstract void finish(FieldInfos fis,
              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(int)`, 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(int)`, `writeField(FieldInfo, IndexableField)`, and `finish(FieldInfos, int)`, returning the number of documents that were written. Implementations can override this method for more sophisticated merging (bulk-byte copying, etc).

Throws:
  `IOException`

#### addDocument

    protected final void addDocument(Iterable<? extends IndexableField> doc,
                   FieldInfos fieldInfos)
                              throws IOException

sugar method for startDocument() + writeField() for every stored field in the document

Throws:
  `IOException`

#### close

    public abstract void close()
                        throws IOException

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