From ff0263c808951d22e7f0324fd28877cf4f6a1fab Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 20 Mar 2003 07:54:24 +0000 Subject: [PATCH] 2003-03-20 Michael Koch * java/io/FileInputStream.java (getChannel): New implementation. * java/io/FileOutputStream.java (ch): New member variable. (getChannel): Implemented. * java/io/RandomAccessFile.java (RandomAccessFile): Throws FileNotFoundException instead of IOException. (getChannel): New method. (ch): New member variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64609 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 13 +++++++++++++ libjava/java/io/FileInputStream.java | 9 ++++++++- libjava/java/io/FileOutputStream.java | 16 ++++++++++++---- libjava/java/io/RandomAccessFile.java | 19 +++++++++++++++++-- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 6c0821e..7e36857 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,18 @@ 2003-03-20 Michael Koch + * java/io/FileInputStream.java + (getChannel): New implementation. + * java/io/FileOutputStream.java + (ch): New member variable. + (getChannel): Implemented. + * java/io/RandomAccessFile.java + (RandomAccessFile): Throws FileNotFoundException instead of + IOException. + (getChannel): New method. + (ch): New member variable. + +2003-03-20 Michael Koch + * java/io/DataOutputStream.java, java/io/File.java, java/io/FileInputStream.java, diff --git a/libjava/java/io/FileInputStream.java b/libjava/java/io/FileInputStream.java index bbc7f7c..dcda9d8 100644 --- a/libjava/java/io/FileInputStream.java +++ b/libjava/java/io/FileInputStream.java @@ -34,6 +34,7 @@ exception statement from your version. */ package java.io; import java.nio.channels.FileChannel; +import gnu.java.nio.FileChannelImpl; /** * @author Warren Levy @@ -124,6 +125,12 @@ public class FileInputStream extends InputStream public FileChannel getChannel () { - return ch; + synchronized (this) + { + if (ch == null) + ch = new FileChannelImpl (fd, false, this); + + return ch; + } } } diff --git a/libjava/java/io/FileOutputStream.java b/libjava/java/io/FileOutputStream.java index 1154a4b..eaf4d9b 100644 --- a/libjava/java/io/FileOutputStream.java +++ b/libjava/java/io/FileOutputStream.java @@ -39,6 +39,7 @@ exception statement from your version. */ package java.io; import java.nio.channels.FileChannel; +import gnu.java.nio.FileChannelImpl; /** * @author Tom Tromey @@ -147,11 +148,18 @@ public class FileOutputStream extends OutputStream fd.close(); } - // Instance variables. - private FileDescriptor fd; - public FileChannel getChannel () { - return null; + synchronized (this) + { + if (ch == null) + ch = new FileChannelImpl (fd, true, this); + + return ch; + } } + + // Instance variables. + private FileDescriptor fd; + private FileChannel ch; } diff --git a/libjava/java/io/RandomAccessFile.java b/libjava/java/io/RandomAccessFile.java index d019282..32d2687 100644 --- a/libjava/java/io/RandomAccessFile.java +++ b/libjava/java/io/RandomAccessFile.java @@ -38,6 +38,9 @@ exception statement from your version. */ package java.io; +import java.nio.channels.FileChannel; +import gnu.java.nio.FileChannelImpl; + /** * @author Tom Tromey * @date September 25, 1998 @@ -78,7 +81,8 @@ public class RandomAccessFile implements DataOutput, DataInput return fd.length(); } - public RandomAccessFile (String fileName, String mode) throws IOException + public RandomAccessFile (String fileName, String mode) + throws FileNotFoundException { int fdmode; if (mode.compareTo ("r") == 0) @@ -101,7 +105,7 @@ public class RandomAccessFile implements DataOutput, DataInput in = new DataInputStream (new FileInputStream (fd)); } - public RandomAccessFile (File file, String mode) throws IOException + public RandomAccessFile (File file, String mode) throws FileNotFoundException { this (file.getPath(), mode); } @@ -276,10 +280,21 @@ public class RandomAccessFile implements DataOutput, DataInput out.writeUTF(s); } + public FileChannel getChannel () + { + synchronized (this) + { + if (ch == null) + ch = new FileChannelImpl (fd, true, this); + + return ch; + } + } // The underlying file. private FileDescriptor fd; // The corresponding input and output streams. private DataOutputStream out; private DataInputStream in; + private FileChannel ch; } -- 2.7.4