Package org.apache.lucene.codecs
Class CodecUtil
- java.lang.Object
-
- org.apache.lucene.codecs.CodecUtil
-
public final class CodecUtil extends java.lang.ObjectUtility class for reading and writing versioned headers.Writing codec headers is useful to ensure that a file is in the format you think it is.
-
-
Field Summary
Fields Modifier and Type Field Description static intCODEC_MAGICConstant to identify the start of a codec header.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static intcheckHeader(DataInput in, java.lang.String codec, int minVersion, int maxVersion)Reads and validates a header previously written withwriteHeader(DataOutput, String, int).static intcheckHeaderNoMagic(DataInput in, java.lang.String codec, int minVersion, int maxVersion)LikecheckHeader(DataInput,String,int,int)except this version assumes the first int has already been read and validated from the input.static intheaderLength(java.lang.String codec)Computes the length of a codec header.static voidwriteHeader(DataOutput out, java.lang.String codec, int version)Writes a codec header, which records both a string to identify the file and a version number.
-
-
-
Field Detail
-
CODEC_MAGIC
public static final int CODEC_MAGIC
Constant to identify the start of a codec header.- See Also:
- Constant Field Values
-
-
Method Detail
-
writeHeader
public static void writeHeader(DataOutput out, java.lang.String codec, int version) throws java.io.IOException
Writes a codec header, which records both a string to identify the file and a version number. This header can be parsed and validated withcheckHeader().CodecHeader --> Magic,CodecName,Version
- Magic -->
Uint32. This identifies the start of the header. It is always 1071082519. - CodecName -->
String. This is a string to identify this file. - Version -->
Uint32. Records the version of the file.
Note that the length of a codec header depends only upon the name of the codec, so this length can be computed at any time with
headerLength(String).- Parameters:
out- Output streamcodec- String to identify this file. It should be simple ASCII, less than 128 characters in length.version- Version number- Throws:
java.io.IOException- If there is an I/O error writing to the underlying medium.
- Magic -->
-
headerLength
public static int headerLength(java.lang.String codec)
Computes the length of a codec header.- Parameters:
codec- Codec name.- Returns:
- length of the entire codec header.
- See Also:
writeHeader(DataOutput, String, int)
-
checkHeader
public static int checkHeader(DataInput in, java.lang.String codec, int minVersion, int maxVersion) throws java.io.IOException
Reads and validates a header previously written withwriteHeader(DataOutput, String, int).When reading a file, supply the expected
codecand an expected version range (minVersion to maxVersion).- Parameters:
in- Input stream, positioned at the point where the header was previously written. Typically this is located at the beginning of the file.codec- The expected codec name.minVersion- The minimum supported expected version number.maxVersion- The maximum supported expected version number.- Returns:
- The actual version found, when a valid header is found
that matches
codec, with an actual version whereminVersion <= actual <= maxVersion. Otherwise an exception is thrown. - Throws:
CorruptIndexException- If the first four bytes are notCODEC_MAGIC, or if the actual codec found is notcodec.IndexFormatTooOldException- If the actual version is less thanminVersion.IndexFormatTooNewException- If the actual version is greater thanmaxVersion.java.io.IOException- If there is an I/O error reading from the underlying medium.- See Also:
writeHeader(DataOutput, String, int)
-
checkHeaderNoMagic
public static int checkHeaderNoMagic(DataInput in, java.lang.String codec, int minVersion, int maxVersion) throws java.io.IOException
LikecheckHeader(DataInput,String,int,int)except this version assumes the first int has already been read and validated from the input.- Throws:
java.io.IOException
-
-