aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/RandomAccessFile.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/io/RandomAccessFile.java')
-rw-r--r--libjava/java/io/RandomAccessFile.java249
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;
+}