org.python.core.io

## Class FileIO

- java.lang.Object
- - org.python.core.io.IOBase
  - - org.python.core.io.RawIOBase
    - - org.python.core.io.FileIO

    public class FileIO
    extends RawIOBase

Raw I/O implementation for OS files.

Author:
  Philip Jenvey

### Field Summary

### Fields inherited from class org.python.core.io.IOBase

`DEFAULT_BUFFER_SIZE`

### Constructor Summary

Constructors
Constructor and Description
`FileIO(java.nio.channels.FileChannel fileChannel, java.lang.String mode)` Construct a FileIO instance with the given FileChannel.
`FileIO(PyString name, java.lang.String mode)` Construct a FileIO instance for the specified file name, which will be decoded using the nominal Jython file system encoding if it is a `str/bytes` rather than a `unicode`.
`FileIO(java.lang.String name, java.lang.String mode)`

### Method Summary

All Methods Instance Methods Concrete Methods
`PyObject` `__add__(PyObject otherObj)`
`PyObject` `__int__()`
`java.io.InputStream` `asInputStream()` Coerce this into an InputStream if possible, or return null.
`java.io.OutputStream` `asOutputStream()` Coerce this into an OutputStream if possible, or return null.
`void` `close()` Flushes and closes the IO object.
`java.nio.channels.FileChannel` `getChannel()` Return the underlying Java nio Channel.
`java.io.FileDescriptor` `getFD()`
`boolean` `isatty()` Returns whether this is an 'interactive' stream.
`boolean` `readable()` Return whether this file was opened for reading.
`java.nio.ByteBuffer` `readall()` Read until EOF with one readinto() call.
`int` `readinto(java.nio.ByteBuffer buf)` Read up to buf.remaining() bytes into buf.
`long` `readinto(java.nio.ByteBuffer[] bufs)` Read bytes into each of the specified ByteBuffers via scatter i/o.
`long` `seek(long pos, int whence)` Seek to byte offset `pos` relative to position indicated by `whence`.
`long` `tell()` Return the current stream position.
`long` `truncate(long size)` Truncate file to size in bytes.
`boolean` `writable()` Return whether this file was opened for writing.
`int` `write(java.nio.ByteBuffer buf)` Write the given ByteBuffer to the IO stream.
`long` `write(java.nio.ByteBuffer[] bufs)` Write bytes from each of the specified ByteBuffers via gather i/o.

### Methods inherited from class org.python.core.io.RawIOBase

`fileno, read`

### Methods inherited from class org.python.core.io.IOBase

`checkClosed, checkReadable, checkWritable, closed, flush, seek`

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

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

### Constructor Detail

#### FileIO

    public FileIO(java.lang.String name,
                  java.lang.String mode)

See Also:
  `FileIO(PyString name, String mode)`

#### FileIO

    public FileIO(PyString name,
                  java.lang.String mode)

Construct a FileIO instance for the specified file name, which will be decoded using the nominal Jython file system encoding if it is a `str/bytes` rather than a `unicode`. The mode can be 'r', 'w' or 'a' for reading (default), writing or appending. Add a '+' to the mode to allow simultaneous reading and writing.

Parameters:
  `name` - the name of the file
  `mode` - a raw io file mode String

#### FileIO

    public FileIO(java.nio.channels.FileChannel fileChannel,
                  java.lang.String mode)

Construct a FileIO instance with the given FileChannel. The mode can be 'r', 'w' or 'a' for reading (default), writing or appending. Add a '+' to the mode to allow simultaneous reading and writing.

Parameters:
  `fileChannel` - a FileChannel object
  `mode` - a raw io file mode String

### Method Detail

#### isatty

    public boolean isatty()

Description copied from class: `IOBase`
Returns whether this is an 'interactive' stream. Returns False if we don't know.

Overrides:
  `isatty` in class `IOBase`
Returns:
  a boolean, true if an 'interactive' stream

#### readinto

    public int readinto(java.nio.ByteBuffer buf)

Description copied from class: `RawIOBase`
Read up to buf.remaining() bytes into buf. Returns number of bytes read (0 for EOF).

Overrides:
  `readinto` in class `RawIOBase`
Parameters:
  `buf` - a ByteBuffer to read bytes into
Returns:
  the amount of data read as an int

#### readinto

    public long readinto(java.nio.ByteBuffer[] bufs)

Read bytes into each of the specified ByteBuffers via scatter i/o. Returns number of bytes read (0 for EOF).

Overrides:
  `readinto` in class `RawIOBase`
Parameters:
  `bufs` - an array of ByteBuffers to read bytes into
Returns:
  the amount of data read as a long

#### readall

    public java.nio.ByteBuffer readall()

Read until EOF with one readinto() call. Takes advantage of the fact that the underlying file's size is available. However, we have to special case if file size is 0, as seen in the /proc virtual file system - in this case we cannot assume the file is truly empty.

Overrides:
  `readall` in class `RawIOBase`
Returns:
  a ByteBuffer containing the bytes read

#### write

    public int write(java.nio.ByteBuffer buf)

Description copied from class: `RawIOBase`
Write the given ByteBuffer to the IO stream. Returns the number of bytes written, which may be less than buf.remaining().

Overrides:
  `write` in class `RawIOBase`
Parameters:
  `buf` - a ByteBuffer value
Returns:
  the number of bytes written as an int

#### write

    public long write(java.nio.ByteBuffer[] bufs)

Write bytes from each of the specified ByteBuffers via gather i/o.

Overrides:
  `write` in class `RawIOBase`
Parameters:
  `bufs` - an array of ByteBuffers
Returns:
  the number of bytes written as a long

#### seek

    public long seek(long pos,
                     int whence)

Description copied from class: `IOBase`
Seek to byte offset `pos` relative to position indicated by `whence`.

Semantics
`whence` | Seek to | `pos`
--- | --- | ---
0 | Start of stream (the default). | Should be ≥0.
1 | Current position + `pos` | Either sign.
2 | End of stream + `pos` | Usually ≤0.

Returns the new absolute position.

Overrides:
  `seek` in class `IOBase`
Parameters:
  `pos` - a long position value
  `whence` - an int whence value
Returns:
  a long position value seeked to

#### tell

    public long tell()

Description copied from class: `IOBase`
Return the current stream position.

Overrides:
  `tell` in class `IOBase`
Returns:
  a long position value

#### truncate

    public long truncate(long size)

Description copied from class: `IOBase`
Truncate file to size in bytes. Returns the new size.

Overrides:
  `truncate` in class `IOBase`
Parameters:
  `size` - a long size to truncate to
Returns:
  a long size value the file was truncated to

#### close

    public void close()

Description copied from class: `IOBase`
Flushes and closes the IO object. This must be idempotent. It should also set a flag for the 'closed' property (see below) to test.

Overrides:
  `close` in class `IOBase`

#### asOutputStream

    public java.io.OutputStream asOutputStream()

Description copied from class: `IOBase`
Coerce this into an OutputStream if possible, or return null.

Overrides:
  `asOutputStream` in class `IOBase`

#### asInputStream

    public java.io.InputStream asInputStream()

Description copied from class: `IOBase`
Coerce this into an InputStream if possible, or return null.

Overrides:
  `asInputStream` in class `IOBase`

#### readable

    public boolean readable()

Description copied from class: `IOBase`
Return whether this file was opened for reading.

Overrides:
  `readable` in class `IOBase`
Returns:
  true if the file was opened for reading

#### writable

    public boolean writable()

Description copied from class: `IOBase`
Return whether this file was opened for writing.

Overrides:
  `writable` in class `IOBase`
Returns:
  true if the file was opened for writing

#### getChannel

    public java.nio.channels.FileChannel getChannel()

Description copied from class: `RawIOBase`
Return the underlying Java nio Channel.

Specified by:
  `getChannel` in class `RawIOBase`
Returns:
  the underlying Java nio Channel

#### getFD

    public java.io.FileDescriptor getFD()

#### __int__

    public PyObject __int__()

#### __add__

    public PyObject __add__(PyObject otherObj)