java.nio.channels

Class FileChannel

Implemented Interfaces:
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

FileChannel()
Initializes the channel.

Method Summary

void
force(boolean metaData)
msync with the disk
protected void
implCloseChannel()
Closes the channel.
FileLock
lock()
Creates a file lock for the whole assoziated file.
FileLock
lock(long position, long size, boolean shared)
Creates a file lock for a region of the assoziated file.
MappedByteBuffer
map(FileChannel.MapMode mode, long position, long size)
Maps the file into the memory.
long
position()
Returns the current position on the file.
FileChannel
position(long newPosition)
Sets the position of the channel on the assoziated file.
int
read(ByteBuffer dst)
Reads data from the channel.
int
read(ByteBuffer dst, long position)
Reads data from the channel.
long
read(ByteBuffer[] dsts)
Reads data from the channel.
long
read(ByteBuffer[] dsts, int offset, int length)
Reads data from the channel.
long
size()
Return the size of the file thus far
long
transferFrom(ReadableByteChannel src, long position, long count)
Transfers bytes from the given readable channel into this channel.
long
transferTo(long position, long count, WritableByteChannel target)
Transfers bytes from this channel's file to the given writable byte channel.
FileChannel
truncate(long size)
Truncates the channel's file at size.
FileLock
tryLock()
Tries to aqquire alock on the whole assoziated file.
FileLock
tryLock(long position, long size, boolean shared)
Tries to aqquire a lock on a region of the assoziated file.
int
write(ByteBuffer src)
Writes data to the channel.
int
write(ByteBuffer srcs, long position)
Writes data to the channel.
long
write(ByteBuffer[] srcs)
Writes data to the channel.
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, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

FileChannel

protected FileChannel()
Initializes the channel.

Method Details

force

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

Throws:
IOException - If an I/O error occurs.


implCloseChannel

protected 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 assoziated 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 FileLock lock(long position,
                     long size,
                     boolean shared)
            throws IOException
Creates a file lock for a region of the assoziated 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 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 long position()
            throws IOException
Returns the current position on the file.

Throws:
IOException - If an I/O error occurs.


position

public 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 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 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 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 long size()
            throws IOException
Return the size of the file thus far


transferFrom

public 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 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 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 assoziated 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 FileLock tryLock(long position,
                        long size,
                        boolean shared)
            throws IOException
Tries to aqquire a lock on a region of the assoziated 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 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 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 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.