## org.apache.hadoop.io.file.tfile
Class TFile.Reader.Scanner

    java.lang.Object
      org.apache.hadoop.io.file.tfile.TFile.Reader.Scanner

All Implemented Interfaces:
  Closeable

Enclosing class:
  TFile.Reader

    public static class TFile.Reader.Scanner

extends Object
implements Closeable

The TFile Scanner. The Scanner has an implicit cursor, which, upon creation, points to the first key-value pair in the scan range. If the scan range is empty, the cursor will point to the end of the scan range.

Use `atEnd()` to test whether the cursor is at the end location of the scanner.

Use `advance()` to move the cursor to the next key-value pair (or end if none exists). Use seekTo methods ( `seekTo(byte[])` or `seekTo(byte[], int, int)`) to seek to any arbitrary location in the covered range (including backward seeking). Use `rewind()` to seek back to the beginning of the scanner. Use `seekToEnd()` to seek to the end of the scanner.

Actual keys and values may be obtained through `TFile.Reader.Scanner.Entry` object, which is obtained through `entry()`.

Nested Class Summary
`class` `TFile.Reader.Scanner.Entry` Entry to a <Key, Value> pair.

Constructor Summary
`protected` `TFile.Reader.Scanner(TFile.Reader reader, long offBegin, long offEnd)` Constructor
`protected` `TFile.Reader.Scanner(TFile.Reader reader, RawComparable beginKey, RawComparable endKey)` Constructor

Method Summary
`boolean` `advance()` Move the cursor to the next key-value pair.
`boolean` `atEnd()` Is cursor at the end location?
`void` `close()` Close the scanner.
`TFile.Reader.Scanner.Entry` `entry()` Get an entry to access the key and value.
`long` `getRecordNum()` Get the RecordNum corresponding to the entry pointed by the cursor.
`void` `lowerBound(byte[] key)` Move the cursor to the first entry whose key is greater than or equal to the input key.
`void` `lowerBound(byte[] key, int keyOffset, int keyLen)` Move the cursor to the first entry whose key is greater than or equal to the input key.
`void` `rewind()` Rewind to the first entry in the scanner.
`boolean` `seekTo(byte[] key)` Move the cursor to the first entry whose key is greater than or equal to the input key.
`boolean` `seekTo(byte[] key, int keyOffset, int keyLen)` Move the cursor to the first entry whose key is greater than or equal to the input key.
`void` `seekToEnd()` Seek to the end of the scanner.
`void` `upperBound(byte[] key)` Move the cursor to the first entry whose key is strictly greater than the input key.
`void` `upperBound(byte[] key, int keyOffset, int keyLen)` Move the cursor to the first entry whose key is strictly greater than the input key.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### TFile.Reader.Scanner

    protected TFile.Reader.Scanner(TFile.Reader reader,
                                   long offBegin,
                                   long offEnd)
                            throws IOException

  Constructor

  Parameters:
    `reader` - The TFile reader object.
    `offBegin` - Begin byte-offset of the scan.
    `offEnd` - End byte-offset of the scan.
  Throws:
    `IOException` - The offsets will be rounded to the beginning of a compressed block whose offset is greater than or equal to the specified offset.

### TFile.Reader.Scanner

    protected TFile.Reader.Scanner(TFile.Reader reader,
                                   RawComparable beginKey,
                                   RawComparable endKey)
                            throws IOException

  Constructor

  Parameters:
    `reader` - The TFile reader object.
    `beginKey` - Begin key of the scan. If null, scan from the first <K,V> entry of the TFile.
    `endKey` - End key of the scan. If null, scan up to the last <K, V> entry of the TFile.
  Throws:
    `IOException`

Method Detail

### seekTo

    public boolean seekTo(byte[] key)
                   throws IOException

  Move the cursor to the first entry whose key is greater than or equal to the input key. Synonymous to seekTo(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
  Returns:
    true if we find an equal key.
  Throws:
    `IOException`

### seekTo

    public boolean seekTo(byte[] key,
                          int keyOffset,
                          int keyLen)
                   throws IOException

  Move the cursor to the first entry whose key is greater than or equal to the input key. The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
    `keyOffset` - offset in the key buffer.
    `keyLen` - key buffer length.
  Returns:
    true if we find an equal key; false otherwise.
  Throws:
    `IOException`

### rewind

    public void rewind()
                throws IOException

  Rewind to the first entry in the scanner. The entry returned by the previous entry() call will be invalid.

  Throws:
    `IOException`

### seekToEnd

    public void seekToEnd()
                   throws IOException

  Seek to the end of the scanner. The entry returned by the previous entry() call will be invalid.

  Throws:
    `IOException`

### lowerBound

    public void lowerBound(byte[] key)
                    throws IOException

  Move the cursor to the first entry whose key is greater than or equal to the input key. Synonymous to lowerBound(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
  Throws:
    `IOException`

### lowerBound

    public void lowerBound(byte[] key,
                           int keyOffset,
                           int keyLen)
                    throws IOException

  Move the cursor to the first entry whose key is greater than or equal to the input key. The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
    `keyOffset` - offset in the key buffer.
    `keyLen` - key buffer length.
  Throws:
    `IOException`

### upperBound

    public void upperBound(byte[] key)
                    throws IOException

  Move the cursor to the first entry whose key is strictly greater than the input key. Synonymous to upperBound(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
  Throws:
    `IOException`

### upperBound

    public void upperBound(byte[] key,
                           int keyOffset,
                           int keyLen)
                    throws IOException

  Move the cursor to the first entry whose key is strictly greater than the input key. The entry returned by the previous entry() call will be invalid.

  Parameters:
    `key` - The input key
    `keyOffset` - offset in the key buffer.
    `keyLen` - key buffer length.
  Throws:
    `IOException`

### advance

    public boolean advance()
                    throws IOException

  Move the cursor to the next key-value pair. The entry returned by the previous entry() call will be invalid.

  Returns:
    true if the cursor successfully moves. False when cursor is already at the end location and cannot be advanced.
  Throws:
    `IOException`

### close

    public void close()
               throws IOException

  Close the scanner. Release all resources. The behavior of using the scanner after calling close is not defined. The entry returned by the previous entry() call will be invalid.

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

### atEnd

    public boolean atEnd()

  Is cursor at the end location?

  Returns:
    true if the cursor is at the end location.

### entry

    public TFile.Reader.Scanner.Entry entry()
                                     throws IOException

  Get an entry to access the key and value.

  Returns:
    The Entry object to access the key and value.
  Throws:
    `IOException`

### getRecordNum

    public long getRecordNum()
                      throws IOException

  Get the RecordNum corresponding to the entry pointed by the cursor.

  Returns:
    The RecordNum corresponding to the entry pointed by the cursor.
  Throws:
    `IOException`

Copyright © 2009 The Apache Software Foundation