java.nio.channels
Class FileChannel

java.lang.Object
  extended by java.nio.channels.spi.AbstractInterruptibleChannel
      extended by java.nio.channels.FileChannel
All Implemented Interfaces:
Closeable, ByteChannel, Channel, GatheringByteChannel, InterruptibleChannel, ReadableByteChannel, ScatteringByteChannel, WritableByteChannel

public abstract class FileChannel
extends AbstractInterruptibleChannel
implements ByteChannel, GatheringByteChannel, ScatteringByteChannel

Since:
1.4

Nested Class Summary
static class FileChannel.MapMode
           
 
Constructor Summary
protected FileChannel()
          Initializes the channel.
 
Method Summary
abstract  void force(boolean metaData)
          msync with the disk
protected abstract  void implCloseChannel()
          Closes the channel.
 FileLock lock()
          Creates a file lock for the whole associated file.
abstract  FileLock lock(long position, long size, boolean shared)
          Creates a file lock for a region of the associated file.
abstract  MappedByteBuffer map(FileChannel.MapMode mode, long position, long size)
          Maps the file into the memory.
abstract  long position()
          Returns the current position on the file.
abstract  FileChannel position(long newPosition)
          Sets the position of the channel on the assoziated file.
abstract  int read(ByteBuffer dst)
          Reads data from the channel.
 long read(ByteBuffer[] dsts)
          Reads data from the channel.
abstract  long read(ByteBuffer[] dsts, int offset, int length)
          Reads data from the channel.
abstract  int read(ByteBuffer dst, long position)
          Reads data from the channel.
abstract  long size()
          Return the size of the file thus far
abstract  long transferFrom(ReadableByteChannel src, long position, long count)
          Transfers bytes from the given readable channel into this channel.
abstract  long transferTo(long position, long count, WritableByteChannel target)
          Transfers bytes from this channel's file to the given writable byte channel.
abstract  FileChannel truncate(long size)
          Truncates the channel's file at size.
 FileLock tryLock()
          Tries to aqquire alock on the whole associated file.
abstract  FileLock tryLock(long position, long size, boolean shared)
          Tries to aqquire a lock on a region of the associated file.
abstract  int write(ByteBuffer src)
          Writes data to the channel.
 long write(ByteBuffer[] srcs)
          Writes data to the channel.
abstract  long write(ByteBuffer[] srcs, int offset, int length)
          Writes data to the channel.
abstract  int write(ByteBuffer srcs, long position)
          Writes data to the channel.
 
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.nio.channels.Channel
close, isOpen
 

Constructor Detail

FileChannel

protected FileChannel()
Initializes the channel.

Method Detail

map

public abstract MappedByteBuffer map(FileChannel.MapMode mode,
                                     long position,
                                     long size)
                              throws IOException
Maps the file into the memory.

Throws:
IllegalArgumentException - If the preconditions on the parameters do not hold.
IOException - If an I/O error occurs.
NonReadableChannelException - If mode is READ_ONLY but this channel was not opened for reading.
NonWritableChannelException - If mode is READ_WRITE or PRIVATE but this channel was not opened for writing.

size

public abstract long size()
                   throws IOException
Return the size of the file thus far

Throws:
ClosedChannelException - If this channel is closed.
IOException

write

public final long write(ByteBuffer[] srcs)
                 throws IOException
Writes data to the channel.

Specified by:
write in interface GatheringByteChannel
Throws:
IOException - If an I/O error occurs.

write

public abstract int write(ByteBuffer src)
                   throws IOException
Writes data to the channel.

Specified by:
write in interface WritableByteChannel
Throws:
IOException - If an I/O error occurs.

write

public abstract int write(ByteBuffer srcs,
                          long position)
                   throws IOException
Writes data to the channel.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedByInterruptException - If another thread interrupts the current thread while the transfer is in progress, thereby closing both channels and setting the current thread's interrupt status.
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.

write

public abstract long write(ByteBuffer[] srcs,
                           int offset,
                           int length)
                    throws IOException
Writes data to the channel.

Specified by:
write in interface GatheringByteChannel
Throws:
IOException - If an I/O error occurs.

read

public abstract long read(ByteBuffer[] dsts,
                          int offset,
                          int length)
                   throws IOException
Reads data from the channel.

Specified by:
read in interface ScatteringByteChannel
Throws:
IOException - If an I/O error occurs.

read

public final long read(ByteBuffer[] dsts)
                throws IOException
Reads data from the channel.

Specified by:
read in interface ScatteringByteChannel
Throws:
IOException - If an I/O error occurs.

read

public abstract int read(ByteBuffer dst)
                  throws IOException
Reads data from the channel.

Specified by:
read in interface ReadableByteChannel
Parameters:
dst - the buffer to put the read data into
Returns:
the numer of bytes read
Throws:
IOException - If an I/O error occurs.

read

public abstract int read(ByteBuffer dst,
                         long position)
                  throws IOException
Reads data from the channel.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedByInterruptException - If another thread interrupts the current thread while the transfer is in progress, thereby closing both channels and setting the current thread's interrupt status.
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonReadableChannelException - If this channel was not opened for reading.

implCloseChannel

protected abstract void implCloseChannel()
                                  throws IOException
Closes the channel. This is called from @see close.

Specified by:
implCloseChannel in class AbstractInterruptibleChannel
Throws:
IOException - If an I/O error occurs.

force

public abstract void force(boolean metaData)
                    throws IOException
msync with the disk

Throws:
ClosedChannelException - If this channel is closed.
IOException - If an I/O error occurs.

lock

public final FileLock lock()
                    throws IOException
Creates a file lock for the whole associated file.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedChannelException - If this channel is closed.
FileLockInterruptionException - If the invoking thread is interrupted while blocked in this method.
IOException - If an I/O error occurs.
NonReadableChannelException - If shared is true and this channel was not opened for reading.
NonWritableChannelException - If shared is false and this channel was not opened for writing.
OverlappingFileLockException - If a lock that overlaps the requested region is already held by this Java virtual machine, or if another thread is already blocked in this method and is attempting to lock an overlapping region.

lock

public abstract FileLock lock(long position,
                              long size,
                              boolean shared)
                       throws IOException
Creates a file lock for a region of the associated file.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedChannelException - If this channel is closed.
FileLockInterruptionException - If the invoking thread is interrupted while blocked in this method.
IllegalArgumentException - If the preconditions on the parameters do not hold.
IOException - If an I/O error occurs.
OverlappingFileLockException - If a lock that overlaps the requested region is already held by this Java virtual machine, or if another thread is already blocked in this method and is attempting to lock an overlapping region.
NonReadableChannelException - If shared is true and this channel was not opened for reading.
NonWritableChannelException - If shared is false and this channel was not opened for writing.

tryLock

public final FileLock tryLock()
                       throws IOException
Tries to aqquire alock on the whole associated file.

Throws:
ClosedChannelException - If this channel is closed.
IOException - If an I/O error occurs.
OverlappingFileLockException - If a lock that overlaps the requested region is already held by this Java virtual machine, or if another thread is already blocked in this method and is attempting to lock an overlapping region.

tryLock

public abstract FileLock tryLock(long position,
                                 long size,
                                 boolean shared)
                          throws IOException
Tries to aqquire a lock on a region of the associated file.

Throws:
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If the preconditions on the parameters do not hold.
IOException - If an I/O error occurs.
OverlappingFileLockException - If a lock that overlaps the requested region is already held by this Java virtual machine, or if another thread is already blocked in this method and is attempting to lock an overlapping region.

position

public abstract long position()
                       throws IOException
Returns the current position on the file.

Throws:
ClosedChannelException - If this channel is closed.
IOException - If an I/O error occurs.

position

public abstract FileChannel position(long newPosition)
                              throws IOException
Sets the position of the channel on the assoziated file.

Throws:
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If newPosition is negative.
IOException - If an I/O error occurs.

transferTo

public abstract long transferTo(long position,
                                long count,
                                WritableByteChannel target)
                         throws IOException
Transfers bytes from this channel's file to the given writable byte channel.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedByInterruptException - If another thread interrupts the current thread while the transfer is in progress, thereby closing both channels and setting the current thread's interrupt status.
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If the preconditions on the parameters do not hold.
IOException - If an I/O error occurs.
NonReadableChannelException - If this channel was not opened for reading.
NonWritableChannelException - If the target channel was not opened for writing.

transferFrom

public abstract long transferFrom(ReadableByteChannel src,
                                  long position,
                                  long count)
                           throws IOException
Transfers bytes from the given readable channel into this channel.

Throws:
AsynchronousCloseException - If another thread closes this channel while the transfer is in progress.
ClosedByInterruptException - If another thread interrupts the current thread while the transfer is in progress, thereby closing both channels and setting the current thread's interrupt status.
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If the preconditions on the parameters do not hold.
IOException - If an I/O error occurs.
NonReadableChannelException - If the source channel was not opened for reading.
NonWritableChannelException - If this channel was not opened for writing.

truncate

public abstract FileChannel truncate(long size)
                              throws IOException
Truncates the channel's file at size.

Throws:
ClosedChannelException - If this channel is closed.
IllegalArgumentException - If size is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.