org.apache.lucene.index

## Class IndexFileNames

- java.lang.Object
- - org.apache.lucene.index.IndexFileNames

    public final class IndexFileNames
    extends Object

This class contains useful constants representing filenames and extensions used by lucene, as well as convenience methods for querying whether a file name matches an extension (`matchesExtension`), as well as generating file names from a segment name, generation and extension ( `fileNameFromGeneration`, `segmentFileName`).

NOTE: extensions used by codecs are not listed here. You must interact with the `Codec` directly.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### Field Summary

Fields
`static String` `COMPOUND_FILE_ENTRIES_EXTENSION` Extension of compound file entries
`static String` `COMPOUND_FILE_EXTENSION` Extension of compound file
`static String` `GEN_EXTENSION` Extension of gen file
`static String[]` `INDEX_EXTENSIONS` This array contains all filename extensions used by Lucene's index files, with one exception, namely the extension made up from `.s` + a number.
`static String` `SEGMENTS` Name of the index segment file
`static String` `SEGMENTS_GEN` Name of the generation reference file name

### Method Summary

Methods
`static String` `fileNameFromGeneration(String base, String ext, long gen)` Computes the full file name from base, extension and generation.
`static boolean` `matchesExtension(String filename, String ext)` Returns true if the given filename ends with the given extension.
`static String` `parseSegmentName(String filename)` Parses the segment name out of the given file name.
`static String` `segmentFileName(String segmentName, String segmentSuffix, String ext)` Returns a file name that includes the given segment name, your own custom name and extension.
`static String` `stripExtension(String filename)` Removes the extension (anything after the first '.'), otherwise returns the original filename.
`static String` `stripSegmentName(String filename)` Strips the segment name out of the given file name.

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

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

### Field Detail

#### SEGMENTS

    public static final String SEGMENTS

Name of the index segment file

See Also:
  Constant Field Values

#### GEN_EXTENSION

    public static final String GEN_EXTENSION

Extension of gen file

See Also:
  Constant Field Values

#### SEGMENTS_GEN

    public static final String SEGMENTS_GEN

Name of the generation reference file name

See Also:
  Constant Field Values

#### COMPOUND_FILE_EXTENSION

    public static final String COMPOUND_FILE_EXTENSION

Extension of compound file

See Also:
  Constant Field Values

#### COMPOUND_FILE_ENTRIES_EXTENSION

    public static final String COMPOUND_FILE_ENTRIES_EXTENSION

Extension of compound file entries

See Also:
  Constant Field Values

#### INDEX_EXTENSIONS

    public static final String[] INDEX_EXTENSIONS

This array contains all filename extensions used by Lucene's index files, with one exception, namely the extension made up from `.s` + a number. Also note that Lucene's `segments_N` files do not have any filename extension.

### Method Detail

#### fileNameFromGeneration

    public static String fileNameFromGeneration(String base,
                                String ext,
                                long gen)

Computes the full file name from base, extension and generation. If the generation is -1, the file name is null. If it's 0, the file name is <base>.<ext>. If it's > 0, the file name is <base>_<gen>.<ext>.
NOTE: .<ext> is added to the name only if `ext` is not an empty string.

Parameters:
  `base` - main part of the file name
  `ext` - extension of the filename
  `gen` - generation

#### segmentFileName

    public static String segmentFileName(String segmentName,
                         String segmentSuffix,
                         String ext)

Returns a file name that includes the given segment name, your own custom name and extension. The format of the filename is: <segmentName>(_<name>)(.<ext>).

NOTE: .<ext> is added to the result file name only if `ext` is not empty.

NOTE: _<segmentSuffix> is added to the result file name only if it's not the empty string

NOTE: all custom files should be named using this method, or otherwise some structures may fail to handle them properly (such as if they are added to compound files).

#### matchesExtension

    public static boolean matchesExtension(String filename,
                           String ext)

Returns true if the given filename ends with the given extension. One should provide a pure extension, without '.'.

#### stripSegmentName

    public static String stripSegmentName(String filename)

Strips the segment name out of the given file name. If you used `segmentFileName(java.lang.String, java.lang.String, java.lang.String)` or `fileNameFromGeneration(java.lang.String, java.lang.String, long)` to create your files, then this method simply removes whatever comes before the first '.', or the second '_' (excluding both).

Returns:
  the filename with the segment name removed, or the given filename if it does not contain a '.' and '_'.

#### parseSegmentName

    public static String parseSegmentName(String filename)

Parses the segment name out of the given file name.

Returns:
  the segment name only, or filename if it does not contain a '.' and '_'.

#### stripExtension

    public static String stripExtension(String filename)

Removes the extension (anything after the first '.'), otherwise returns the original filename.