Package org.globus.ftp

# Class FileRandomIO

java.lang.Object
org.globus.ftp.FileRandomIO

All Implemented Interfaces:
  `DataSink`, `DataSource`

public class FileRandomIO extends Object implements DataSink, DataSource
Thread safe reference implementation of DataSink and DataSource. Implements reading and writing data to a local file. Note: Does not work with `Session.STREAM` transfer mode, only with `GridFTPSession.EBLOCK` mode.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected int`
`bufferSize`
`static final int`
`DEFAULT_BUFFER_SIZE`
`protected RandomAccessFile`
`file`
`protected long`
`offset`

## Constructor Summary

Constructors
Constructor
Description
`FileRandomIO(RandomAccessFile file)`
Behave like FileRandomIO(file, DEFAULT_BUFFER_SIZE)
`FileRandomIO(RandomAccessFile file, int bufferSize)`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Closes the underlying file
`Buffer`
`read()`
In this implementation, each read() returns data sequentially.
`long`
`totalSize()`
Optional operation.
`void`
`write(Buffer buffer)`
Writes the specified buffer to this data sink.

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

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

## Field Details

### DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE

See Also:
  - Constant Field Values

### bufferSize

protected int bufferSize

### file

protected RandomAccessFile file

### offset

protected long offset

## Constructor Details

### FileRandomIO

public FileRandomIO(RandomAccessFile file)
Behave like FileRandomIO(file, DEFAULT_BUFFER_SIZE)

Parameters:
  `file` - local file that will be be used as data source or destination

### FileRandomIO

public FileRandomIO(RandomAccessFile file, int bufferSize)

Parameters:
  `file` - local file that will be be used as data source or destination
  `bufferSize` - size of the buffer returned during single read operation

## Method Details

### write

public void write(Buffer buffer) throws IOException
Description copied from interface: `DataSink`
Writes the specified buffer to this data sink.
Note: `buffer.getOffset()` might return -1 if the transfer mode used does not support data offsets, for example stream transfer mode.

Specified by:
  `write` in interface `DataSink`
Parameters:
  `buffer` - the data buffer to write.
Throws:
  `IOException` - if an I/O error occurs.

### read

public Buffer read() throws IOException
In this implementation, each read() returns data sequentially.

Specified by:
  `read` in interface `DataSource`
Returns:
  The data buffer read. Null, if there is no more data to be read.
Throws:
  `IOException` - if an I/O error occurs.

### close

public void close() throws IOException
Closes the underlying file

Specified by:
  `close` in interface `DataSink`
Specified by:
  `close` in interface `DataSource`
Throws:
  `IOException` - if an I/O error occurs.

### totalSize

public long totalSize() throws IOException
Description copied from interface: `DataSource`
Optional operation. Returns the total size, in bytes, of the data in this source. If the implementation is not able to provide a total size for the data source, it should return -1

Specified by:
  `totalSize` in interface `DataSource`
Throws:
  `IOException` - if an I/O exception occurs