diff options
author | Michael Koch <konqueror@gmx.de> | 2004-04-23 06:56:34 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-04-23 06:56:34 +0000 |
commit | 87939d70f8e59736e8d8d19b04694363452a817e (patch) | |
tree | cc46dbedcaa086a2bbc793056e368e55c7223be4 /libjava/gnu/java/nio/channels/FileChannelImpl.java | |
parent | 5d837a584fa54f5181f52ef4d14ef441ead866be (diff) | |
download | gcc-87939d70f8e59736e8d8d19b04694363452a817e.zip gcc-87939d70f8e59736e8d8d19b04694363452a817e.tar.gz gcc-87939d70f8e59736e8d8d19b04694363452a817e.tar.bz2 |
2004-04-23 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/channels/FileChannelImpl.java
(SET, CUR): Unused, removed.
(read): Implement here directly.
(implRead): Removed.
(write): Implement here directly.
(implWrite): Removed.
From-SVN: r81079
Diffstat (limited to 'libjava/gnu/java/nio/channels/FileChannelImpl.java')
-rw-r--r-- | libjava/gnu/java/nio/channels/FileChannelImpl.java | 65 |
1 files changed, 25 insertions, 40 deletions
diff --git a/libjava/gnu/java/nio/channels/FileChannelImpl.java b/libjava/gnu/java/nio/channels/FileChannelImpl.java index 4bddf26..ea6ef0e 100644 --- a/libjava/gnu/java/nio/channels/FileChannelImpl.java +++ b/libjava/gnu/java/nio/channels/FileChannelImpl.java @@ -60,13 +60,8 @@ import java.nio.channels.WritableByteChannel; * Instances of this class are created by invoking getChannel * Upon a Input/Output/RandomAccessFile object. */ - public final class FileChannelImpl extends FileChannel { - // These are WHENCE values for seek. - static final int SET = 0; - static final int CUR = 1; - // These are mode values for open(). public static final int READ = 1; public static final int WRITE = 2; @@ -139,7 +134,15 @@ public final class FileChannelImpl extends FileChannel public int read (ByteBuffer dst) throws IOException { - return implRead (dst); + int result; + byte[] buffer = new byte [dst.remaining ()]; + + result = read (buffer, 0, buffer.length); + + if (result > 0) + dst.put (buffer, 0, result); + + return result; } public int read (ByteBuffer dst, long position) @@ -149,25 +152,12 @@ public final class FileChannelImpl extends FileChannel throw new IllegalArgumentException (); long oldPosition = implPosition (); position (position); - int result = implRead (dst); + int result = read(dst); position (oldPosition); return result; } - private int implRead (ByteBuffer dst) throws IOException - { - int result; - byte[] buffer = new byte [dst.remaining ()]; - - result = read (buffer, 0, buffer.length); - - if (result > 0) - dst.put (buffer, 0, result); - - return result; - } - public native int read () throws IOException; @@ -189,7 +179,20 @@ public final class FileChannelImpl extends FileChannel public int write (ByteBuffer src) throws IOException { - return implWrite (src); + int len = src.remaining (); + if (src.hasArray()) + { + byte[] buffer = src.array(); + write(buffer, src.arrayOffset() + src.position(), len); + } + else + { + // Use a more efficient native method! FIXME! + byte[] buffer = new byte [len]; + src.get (buffer, 0, len); + write (buffer, 0, len); + } + return len; } public int write (ByteBuffer src, long position) @@ -209,30 +212,12 @@ public final class FileChannelImpl extends FileChannel oldPosition = implPosition (); seek (position); - result = implWrite (src); + result = write(src); seek (oldPosition); return result; } - private int implWrite (ByteBuffer src) throws IOException - { - int len = src.remaining (); - if (src.hasArray()) - { - byte[] buffer = src.array(); - write(buffer, src.arrayOffset() + src.position(), len); - } - else - { - // Use a more efficient native method! FIXME! - byte[] buffer = new byte [len]; - src.get (buffer, 0, len); - write (buffer, 0, len); - } - return len; - } - public native void write (byte[] buffer, int offset, int length) throws IOException; |