diff options
Diffstat (limited to 'libjava/java/io/RandomAccessFile.java')
-rw-r--r-- | libjava/java/io/RandomAccessFile.java | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/libjava/java/io/RandomAccessFile.java b/libjava/java/io/RandomAccessFile.java new file mode 100644 index 0000000..d240e0d --- /dev/null +++ b/libjava/java/io/RandomAccessFile.java @@ -0,0 +1,249 @@ +// RandomAccessFile.java + +/* Copyright (C) 1998, 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.io; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date September 25, 1998 + */ + +/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 + * "The Java Language Specification", ISBN 0-201-63451-1 + * Status: not finished + */ + +public class RandomAccessFile implements DataOutput, DataInput +{ + public void close () throws IOException + { + fd.close(); + } + + public final FileDescriptor getFD () throws IOException + { + if (! fd.valid()) + throw new IOException (); + return fd; + } + + public long getFilePointer () throws IOException + { + return fd.getFilePointer(); + } + + public long length () throws IOException + { + return fd.length(); + } + + public RandomAccessFile (String fileName, String mode) throws IOException + { + int fdmode; + if (mode.compareTo ("r") == 0) + fdmode = FileDescriptor.READ; + else if (mode.compareTo ("rw") == 0) + fdmode = FileDescriptor.READ | FileDescriptor.WRITE; + else + throw new IllegalArgumentException ("invalid mode: " + mode); + + SecurityManager s = System.getSecurityManager(); + if (s != null) + { + s.checkRead(fileName); + if ((fdmode & FileDescriptor.WRITE) != 0) + s.checkWrite(fileName); + } + + fd = new FileDescriptor (fileName, fdmode); + // FIXME: read-only mode. + out = new DataOutputStream (new FileOutputStream (fd)); + in = new DataInputStream (new FileInputStream (fd)); + } + + public RandomAccessFile (File file, String mode) throws IOException + { + this (file.getPath(), mode); + } + + public int read () throws IOException + { + return in.read(); + } + + public int read (byte[] buffer) throws IOException + { + return in.read(buffer); + } + + public int read (byte[] buffer, int offset, int count) throws IOException + { + return in.read(buffer, offset, count); + } + + public final boolean readBoolean () throws IOException + { + return in.readBoolean(); + } + + public final byte readByte () throws IOException + { + return in.readByte(); + } + + public final char readChar () throws IOException + { + return in.readChar(); + } + + public final double readDouble () throws IOException + { + return in.readDouble(); + } + + public final float readFloat () throws IOException + { + return in.readFloat(); + } + + public final void readFully (byte[] buffer) throws IOException + { + // FIXME. + } + + public final void readFully (byte[] buffer, int offset, int count) + throws IOException + { + // FIXME. + } + + public final int readInt () throws IOException + { + return in.readInt(); + } + + public final String readLine () throws IOException + { + // FIXME? + return in.readLine(); + } + + public final long readLong () throws IOException + { + return in.readLong(); + } + + public final short readShort () throws IOException + { + return in.readShort(); + } + + public final int readUnsignedByte () throws IOException + { + return in.readUnsignedByte(); + } + + public final int readUnsignedShort () throws IOException + { + return in.readUnsignedShort(); + } + + public final String readUTF () throws IOException + { + return in.readUTF(); + } + + public void seek (long pos) throws IOException + { + fd.seek(pos, FileDescriptor.SET); + } + + public int skipBytes (int count) throws IOException + { + return fd.seek(count, FileDescriptor.CUR); + } + + public void write (int oneByte) throws IOException + { + out.write(oneByte); + } + + public void write (byte[] buffer) throws IOException + { + out.write(buffer); + } + + public void write (byte[] buffer, int offset, int count) throws IOException + { + out.write(buffer, offset, count); + } + + public final void writeBoolean (boolean val) throws IOException + { + out.writeBoolean(val); + } + + public final void writeByte (int v) throws IOException + { + out.writeByte(v); + } + + public final void writeShort (int v) throws IOException + { + out.writeShort(v); + } + + public final void writeChar (int v) throws IOException + { + out.writeChar(v); + } + + public final void writeInt (int v) throws IOException + { + out.writeInt(v); + } + + public final void writeLong (long v) throws IOException + { + out.writeLong(v); + } + + public final void writeFloat (float v) throws IOException + { + out.writeFloat(v); + } + + public final void writeDouble (double v) throws IOException + { + out.writeDouble(v); + } + + public final void writeBytes (String s) throws IOException + { + out.writeBytes(s); + } + + public final void writeChars (String s) throws IOException + { + out.writeChars(s); + } + + public final void writeUTF (String s) throws IOException + { + out.writeUTF(s); + } + + + // The underlying file. + private FileDescriptor fd; + // The corresponding input and output streams. + private DataOutputStream out; + private DataInputStream in; +} |