mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			249 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Java
		
	
	
	
| // RandomAccessFile.java
 | |
| 
 | |
| /* Copyright (C) 1998, 1999, 2001  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, false);
 | |
|   }
 | |
| 
 | |
|   public int skipBytes (int count) throws IOException
 | |
|   {
 | |
|     return count <= 0 ? 0 : fd.seek(count, FileDescriptor.CUR, true);
 | |
|   }
 | |
| 
 | |
|   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;
 | |
| }
 |