From a809cb64cf76259d2d0b87e14332a227c34da5ea Mon Sep 17 00:00:00 2001 From: mkoch Date: Fri, 29 Apr 2005 18:47:42 +0000 Subject: 2005-04-29 Dalibor Topic * java/nio/channels/FileChannelImpl.java (FileChannelImpl(String, int)): Removed. (FileChannelImpl(File, int)): Added. Check if opened file is a directory. * java/io/FileInputStream.java(FileInputStream): Fixed javadocs. Call FileChannelImpl(File, int). * java/io/FileOutputStream.java (FileInputStream): Call FileChannelImpl(File, int). * java/io/RandomAccessFile.java (RandomAccessFile): Call FileChannelImpl(File, int). Switched constructors around. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99011 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/gnu/java/nio/channels/FileChannelImpl.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'libjava/gnu/java') diff --git a/libjava/gnu/java/nio/channels/FileChannelImpl.java b/libjava/gnu/java/nio/channels/FileChannelImpl.java index 9d978c923f7..aaa4c260864 100644 --- a/libjava/gnu/java/nio/channels/FileChannelImpl.java +++ b/libjava/gnu/java/nio/channels/FileChannelImpl.java @@ -41,6 +41,7 @@ package gnu.java.nio.channels; import gnu.classpath.Configuration; import gnu.java.nio.FileLockImpl; +import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.ByteBuffer; @@ -102,10 +103,27 @@ public final class FileChannelImpl extends FileChannel } /* Open a file. MODE is a combination of the above mode flags. */ - public FileChannelImpl (String path, int mode) throws FileNotFoundException + public FileChannelImpl (File file, int mode) throws FileNotFoundException { + final String path = file.getPath(); fd = open (path, mode); this.mode = mode; + + // First open the file and then check if it is a a directory + // to avoid race condition. + if (file.isDirectory()) + { + try + { + close(); + } + catch (IOException e) + { + /* ignore it */ + } + + throw new FileNotFoundException(path + " is a directory"); + } } /* Used by init() (native code) */ -- cgit v1.2.3