| // RandomAccessFile.java |
| |
| /* Copyright (C) 1998, 1999 Free Software Foundation |
| |
| 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: Believe complete and correct to 1.1. |
| */ |
| |
| public class RandomAccessFile implements DataOutput, DataInput |
| { |
| public void close () throws IOException |
| { |
| if (fd.valid()) |
| 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); |
| 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 |
| { |
| in.readFully(buffer); |
| } |
| |
| public final void readFully (byte[] buffer, int offset, int count) |
| throws IOException |
| { |
| in.readFully(buffer, offset, count); |
| } |
| |
| public final int readInt () throws IOException |
| { |
| return in.readInt(); |
| } |
| |
| public final String readLine () throws IOException |
| { |
| 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; |
| } |