java.nio.channels

Class FileChannel

Implemented Interfaces:
ByteChannel, Channel, Closeable, 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

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.
abstract int
read(ByteBuffer dst, long position)
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 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.
abstract int
write(ByteBuffer srcs, long position)
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.

Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel

begin, close, end, implCloseChannel, isOpen

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

FileChannel

protected FileChannel()
Initializes the channel.

Method Details

force

public abstract void force(boolean metaData)
            throws IOException
msync with the disk
Throws:
IOException - If an I/O error occurs.

implCloseChannel

protected abstract void implCloseChannel()
            throws IOException
Closes the channel. This is called from @see close.
Overrides:
implCloseChannel in interface AbstractInterruptibleChannel
Throws:
IOException - If an I/O error occurs.

lock

public final FileLock lock()
            throws IOException
Creates a file lock for the whole associated file.
Throws:
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:
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.

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.

position

public abstract long position()
            throws IOException
Returns the current position on the file.
Throws:
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:
IllegalArgumentException - If newPosition is negative.
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
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:
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonReadableChannelException - If this channel was not opened for reading.

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 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.

size

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

transferFrom

public abstract long transferFrom(ReadableByteChannel src,
                                  long position,
                                  long count)
            throws IOException
Transfers bytes from the given readable channel into this channel.
Throws:
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.

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:
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.

truncate

public abstract FileChannel truncate(long size)
            throws IOException
Truncates the channel's file at size.
Throws:
IllegalArgumentException - If size is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.

tryLock

public final FileLock tryLock()
            throws IOException
Tries to aqquire alock on the whole associated file.
Throws:
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:
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.

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:
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.

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 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.

FileChannel.java -- Copyright (C) 2002 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.