2005-04-29 Dalibor Topic <robilad@kaffe.org>

* 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.

From-SVN: r99011
This commit is contained in:
Dalibor Topic 2005-04-29 18:47:42 +00:00 committed by Michael Koch
parent 2c80f01549
commit b61ae8b261
5 changed files with 80 additions and 43 deletions

View file

@ -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) */