org.apache.thrift.transport

## Class TFileTransport

- java.lang.Object
- - org.apache.thrift.transport.TTransport
  - - org.apache.thrift.transport.TFileTransport

-     public class TFileTransport
      extends TTransport

  FileTransport implementation of the TTransport interface. Currently this is a straightforward port of the cpp implementation It may make better sense to provide a basic stream access on top of the framed file format The FileTransport can then be a user of this framed file format with some additional logic for chunking.
  Author:
    Joydeep Sen Sarma

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `TFileTransport.chunkState`
    `static class` | `TFileTransport.Event`
    `static class` | `TFileTransport.tailPolicy`
    `static class` | `TFileTransport.truncableBufferedInputStream`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected TSeekableFile` | `inputFile_` Underlying file being read
    `protected java.io.OutputStream` | `outputStream_` Underlying outputStream

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TFileTransport(java.lang.String path, boolean readOnly)` File Transport ctor
    `TFileTransport(TSeekableFile inputFile, boolean readOnly)` File Transport ctor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the transport.
    `void` | `flush()` Flush any pending data out of a transport buffer.
    `int` | `getCurChunk()`
    `int` | `getNumChunks()`
    `TFileTransport.tailPolicy` | `getTailPolicy()` Get File Tailing Policy
    `boolean` | `isOpen()` open if both input/output open unless readonly
    `static void` | `main(java.lang.String[] args)` test program
    `void` | `open()` Diverging from the cpp model and sticking to the TSocket model Files are not opened in ctor - but in explicit open call
    `int` | `read(byte[] buf, int off, int len)` Reads up to len bytes into buffer buf, starting at offset off.
    `int` | `readAll(byte[] buf, int off, int len)` Cloned from TTransport.java:readAll().
    `void` | `seekToChunk(int chunk)`
    `void` | `seekToEnd()`
    `TFileTransport.tailPolicy` | `setTailPolicy(TFileTransport.tailPolicy policy)` Set file Tailing Policy
    `void` | `write(byte[] buf, int off, int len)` Writes up to len bytes from the buffer.

    - ### Methods inherited from class org.apache.thrift.transport.TTransport

      `consumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, write`

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

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

- - ### Field Detail

    - #### inputFile_

          protected TSeekableFile inputFile_

      Underlying file being read

    - #### outputStream_

          protected java.io.OutputStream outputStream_

      Underlying outputStream

  - ### Constructor Detail

    - #### TFileTransport

          public TFileTransport(java.lang.String path,
                        boolean readOnly)
                         throws java.io.IOException

      File Transport ctor
      Parameters:
        `path` - File path to read and write from
        `readOnly` - Whether this is a read-only transport
      Throws:
        `java.io.IOException`

    - #### TFileTransport

          public TFileTransport(TSeekableFile inputFile,
                        boolean readOnly)

      File Transport ctor
      Parameters:
        `inputFile_` - open TSeekableFile to read/write from
        `readOnly` - Whether this is a read-only transport

  - ### Method Detail

    - #### getTailPolicy

          public TFileTransport.tailPolicy getTailPolicy()

      Get File Tailing Policy
      Returns:
        current read policy

    - #### setTailPolicy

          public TFileTransport.tailPolicy setTailPolicy(TFileTransport.tailPolicy policy)

      Set file Tailing Policy
      Parameters:
        `policy` - New policy to set
      Returns:
        Old policy

    - #### isOpen

          public boolean isOpen()

      open if both input/output open unless readonly
      Specified by:
        `isOpen` in class `TTransport`
      Returns:
        true

    - #### open

          public void open()
                    throws TTransportException

      Diverging from the cpp model and sticking to the TSocket model Files are not opened in ctor - but in explicit open call
      Specified by:
        `open` in class `TTransport`
      Throws:
        `TTransportException` - if the transport could not be opened

    - #### close

          public void close()

      Closes the transport.
      Specified by:
        `close` in class `TTransport`

    - #### readAll

          public int readAll(byte[] buf,
                    int off,
                    int len)
                      throws TTransportException

      Cloned from TTransport.java:readAll(). Only difference is throwing an EOF exception where one is detected.
      Overrides:
        `readAll` in class `TTransport`
      Parameters:
        `buf` - Array to read into
        `off` - Index to start reading at
        `len` - Maximum number of bytes to read
      Returns:
        The number of bytes actually read, which must be equal to len
      Throws:
        `TTransportException` - if there was an error reading data

    - #### read

          public int read(byte[] buf,
                 int off,
                 int len)
                   throws TTransportException

      Reads up to len bytes into buffer buf, starting at offset off.
      Specified by:
        `read` in class `TTransport`
      Parameters:
        `buf` - Array to read into
        `off` - Index to start reading at
        `len` - Maximum number of bytes to read
      Returns:
        The number of bytes actually read
      Throws:
        `TTransportException` - if there was an error reading data

    - #### getNumChunks

          public int getNumChunks()
                           throws TTransportException

      Throws:
        `TTransportException`

    - #### getCurChunk

          public int getCurChunk()
                          throws TTransportException

      Throws:
        `TTransportException`

    - #### seekToChunk

          public void seekToChunk(int chunk)
                           throws TTransportException

      Throws:
        `TTransportException`

    - #### seekToEnd

          public void seekToEnd()
                         throws TTransportException

      Throws:
        `TTransportException`

    - #### write

          public void write(byte[] buf,
                   int off,
                   int len)
                     throws TTransportException

      Writes up to len bytes from the buffer.
      Specified by:
        `write` in class `TTransport`
      Parameters:
        `buf` - The output data buffer
        `off` - The offset to start writing from
        `len` - The number of bytes to write
      Throws:
        `TTransportException` - if there was an error writing data

    - #### flush

          public void flush()
                     throws TTransportException

      Flush any pending data out of a transport buffer.
      Overrides:
        `flush` in class `TTransport`
      Throws:
        `TTransportException` - if there was an error writing out data.

    - #### main

          public static void main(java.lang.String[] args)
                           throws java.lang.Exception

      test program
      Throws:
        `java.lang.Exception`