gnu.java.nio.channels

Class FileChannelImpl

Implemented Interfaces:
ByteChannel, Channel, Closeable, GatheringByteChannel, InterruptibleChannel, ReadableByteChannel, ScatteringByteChannel, WritableByteChannel

public final class FileChannelImpl
extends FileChannel

This file is not user visible ! But alas, Java does not have a concept of friendly packages so this class is public. Instances of this class are created by invoking getChannel Upon a Input/Output/RandomAccessFile object.

Nested Class Summary

Nested classes/interfaces inherited from class java.nio.channels.FileChannel

FileChannel.MapMode

Field Summary

static int
APPEND
static int
DSYNC
static int
EXCL
static int
READ
static int
SYNC
static int
WRITE
static FileChannelImpl
err
static FileChannelImpl
in
static FileChannelImpl
out

Constructor Summary

FileChannelImpl()
Initializes the channel.

Method Summary

int
available()
static FileChannelImpl
create(File file, int mode)
protected void
finalize()
Makes sure the Channel is properly closed.
void
force(boolean metaData)
msync with the disk
int
getNativeFD()
protected void
implCloseChannel()
Closes the channel.
FileLock
lock(long position, long size, boolean shared)
Creates a file lock for a region of the associated file.
MappedByteBuffer
map(FileChannel.MapMode mode, long position, long size)
Maps the file into the memory.
MappedByteBuffer
mapImpl(char mode, long position, int size)
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()
int
read(byte[] buffer, int offset, int length)
int
read(ByteBuffer dst)
Reads data from the channel.
int
read(ByteBuffer dst, long position)
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(long position, long size, boolean shared)
Tries to aqquire a lock on a region of the associated file.
void
unlock(long pos, long len)
void
write(byte[] buffer, int offset, int length)
void
write(int b)
int
write(ByteBuffer src)
Writes data to the channel.
int
write(ByteBuffer src, long position)
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.FileChannel

force, implCloseChannel, lock, lock, map, position, position, read, read, read, read, size, transferFrom, transferTo, truncate, tryLock, tryLock, write, write, write, write

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

Field Details

APPEND

public static final int APPEND
Field Value:
4

DSYNC

public static final int DSYNC
Field Value:
32

EXCL

public static final int EXCL
Field Value:
8

READ

public static final int READ
Field Value:
1

SYNC

public static final int SYNC
Field Value:
16

WRITE

public static final int WRITE
Field Value:
2

err

public static FileChannelImpl err

in

public static FileChannelImpl in

out

public static FileChannelImpl out

Constructor Details

FileChannelImpl

public FileChannelImpl()
Initializes the channel.

Method Details

available

public int available()
            throws IOException

create

public static FileChannelImpl create(File file,
                                     int mode)
            throws FileNotFoundException

finalize

protected void finalize()
            throws IOException
Makes sure the Channel is properly closed.
Overrides:
finalize in interface Object

force

public void force(boolean metaData)
            throws IOException
msync with the disk
Overrides:
force in interface FileChannel

getNativeFD

public int getNativeFD()
Returns:
The native file descriptor.

implCloseChannel

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

lock

public FileLock lock(long position,
                     long size,
                     boolean shared)
            throws IOException
Creates a file lock for a region of the associated file.
Overrides:
lock in interface FileChannel
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.
Overrides:
map in interface FileChannel
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.

mapImpl

public MappedByteBuffer mapImpl(char mode,
                                long position,
                                int size)
            throws IOException

position

public long position()
            throws IOException
Returns the current position on the file.
Overrides:
position in interface FileChannel
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.
Overrides:
position in interface FileChannel
Throws:
IllegalArgumentException - If newPosition is negative.
IOException - If an I/O error occurs.

read

public int read()
            throws IOException

read

public int read(byte[] buffer,
                int offset,
                int length)
            throws IOException

read

public int read(ByteBuffer dst)
            throws IOException
Reads data from the channel.
Specified by:
read in interface ReadableByteChannel
Overrides:
read in interface FileChannel
Throws:
IOException - If an I/O error occurs.

read

public int read(ByteBuffer dst,
                long position)
            throws IOException
Reads data from the channel.
Overrides:
read in interface FileChannel
Throws:
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonReadableChannelException - If this channel was not opened for reading.

read

public long read(ByteBuffer[] dsts,
                 int offset,
                 int length)
            throws IOException
Reads data from the channel.
Specified by:
read in interface ScatteringByteChannel
Overrides:
read in interface FileChannel
Throws:
IOException - If an I/O error occurs.

size

public long size()
            throws IOException
Return the size of the file thus far
Overrides:
size in interface FileChannel

transferFrom

public long transferFrom(ReadableByteChannel src,
                         long position,
                         long count)
            throws IOException
Transfers bytes from the given readable channel into this channel.
Overrides:
transferFrom in interface FileChannel
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.
Overrides:
transferTo in interface FileChannel
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.
Overrides:
truncate in interface FileChannel
Throws:
IllegalArgumentException - If size is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.

tryLock

public FileLock tryLock(long position,
                        long size,
                        boolean shared)
            throws IOException
Tries to aqquire a lock on a region of the associated file.
Overrides:
tryLock in interface FileChannel
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.

unlock

public void unlock(long pos,
                   long len)
            throws IOException

write

public void write(byte[] buffer,
                  int offset,
                  int length)
            throws IOException

write

public void write(int b)
            throws IOException

write

public int write(ByteBuffer src)
            throws IOException
Writes data to the channel.
Specified by:
write in interface WritableByteChannel
Overrides:
write in interface FileChannel
Throws:
IOException - If an I/O error occurs.

write

public int write(ByteBuffer src,
                 long position)
            throws IOException
Writes data to the channel.
Overrides:
write in interface FileChannel
Throws:
IllegalArgumentException - If position is negative.
IOException - If an I/O error occurs.
NonWritableChannelException - If this channel was not opened for writing.

write

public long write(ByteBuffer[] srcs,
                  int offset,
                  int length)
            throws IOException
Writes data to the channel.
Specified by:
write in interface GatheringByteChannel
Overrides:
write in interface FileChannel
Throws:
IOException - If an I/O error occurs.

FileChannelImpl.java -- Copyright (C) 2002, 2004, 2005, 2006 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.