home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / io / DataInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  2.8 KB  |  235 lines

  1. package java.io;
  2.  
  3. public class DataInputStream extends FilterInputStream implements DataInput {
  4.    private char[] lineBuffer;
  5.  
  6.    public DataInputStream(InputStream var1) {
  7.       super(var1);
  8.    }
  9.  
  10.    public final int read(byte[] var1) throws IOException {
  11.       return super.in.read(var1, 0, var1.length);
  12.    }
  13.  
  14.    public final int read(byte[] var1, int var2, int var3) throws IOException {
  15.       return super.in.read(var1, var2, var3);
  16.    }
  17.  
  18.    public final void readFully(byte[] var1) throws IOException {
  19.       this.readFully(var1, 0, var1.length);
  20.    }
  21.  
  22.    public final void readFully(byte[] var1, int var2, int var3) throws IOException {
  23.       InputStream var4 = super.in;
  24.  
  25.       int var6;
  26.       for(int var5 = 0; var5 < var3; var5 += var6) {
  27.          var6 = var4.read(var1, var2 + var5, var3 - var5);
  28.          if (var6 < 0) {
  29.             throw new EOFException();
  30.          }
  31.       }
  32.  
  33.    }
  34.  
  35.    public final int skipBytes(int var1) throws IOException {
  36.       InputStream var2 = super.in;
  37.  
  38.       for(int var3 = 0; var3 < var1; var3 += (int)var2.skip((long)(var1 - var3))) {
  39.       }
  40.  
  41.       return var1;
  42.    }
  43.  
  44.    public final boolean readBoolean() throws IOException {
  45.       int var1 = super.in.read();
  46.       if (var1 < 0) {
  47.          throw new EOFException();
  48.       } else {
  49.          return var1 != 0;
  50.       }
  51.    }
  52.  
  53.    public final byte readByte() throws IOException {
  54.       int var1 = super.in.read();
  55.       if (var1 < 0) {
  56.          throw new EOFException();
  57.       } else {
  58.          return (byte)var1;
  59.       }
  60.    }
  61.  
  62.    public final int readUnsignedByte() throws IOException {
  63.       int var1 = super.in.read();
  64.       if (var1 < 0) {
  65.          throw new EOFException();
  66.       } else {
  67.          return var1;
  68.       }
  69.    }
  70.  
  71.    public final short readShort() throws IOException {
  72.       InputStream var1 = super.in;
  73.       int var2 = var1.read();
  74.       int var3 = var1.read();
  75.       if ((var2 | var3) < 0) {
  76.          throw new EOFException();
  77.       } else {
  78.          return (short)((var2 << 8) + var3);
  79.       }
  80.    }
  81.  
  82.    public final int readUnsignedShort() throws IOException {
  83.       InputStream var1 = super.in;
  84.       int var2 = var1.read();
  85.       int var3 = var1.read();
  86.       if ((var2 | var3) < 0) {
  87.          throw new EOFException();
  88.       } else {
  89.          return (var2 << 8) + var3;
  90.       }
  91.    }
  92.  
  93.    public final char readChar() throws IOException {
  94.       InputStream var1 = super.in;
  95.       int var2 = var1.read();
  96.       int var3 = var1.read();
  97.       if ((var2 | var3) < 0) {
  98.          throw new EOFException();
  99.       } else {
  100.          return (char)((var2 << 8) + var3);
  101.       }
  102.    }
  103.  
  104.    public final int readInt() throws IOException {
  105.       InputStream var1 = super.in;
  106.       int var2 = var1.read();
  107.       int var3 = var1.read();
  108.       int var4 = var1.read();
  109.       int var5 = var1.read();
  110.       if ((var2 | var3 | var4 | var5) < 0) {
  111.          throw new EOFException();
  112.       } else {
  113.          return (var2 << 24) + (var3 << 16) + (var4 << 8) + var5;
  114.       }
  115.    }
  116.  
  117.    public final long readLong() throws IOException {
  118.       return ((long)this.readInt() << 32) + ((long)this.readInt() & 4294967295L);
  119.    }
  120.  
  121.    public final float readFloat() throws IOException {
  122.       return Float.intBitsToFloat(this.readInt());
  123.    }
  124.  
  125.    public final double readDouble() throws IOException {
  126.       return Double.longBitsToDouble(this.readLong());
  127.    }
  128.  
  129.    public final String readLine() throws IOException {
  130.       InputStream var1 = super.in;
  131.       char[] var2 = this.lineBuffer;
  132.       if (var2 == null) {
  133.          var2 = this.lineBuffer = new char[128];
  134.       }
  135.  
  136.       int var3 = var2.length;
  137.       int var4 = 0;
  138.  
  139.       while(true) {
  140.          int var5;
  141.          switch (var5 = var1.read()) {
  142.             case 13:
  143.                int var6 = var1.read();
  144.                if (var6 != 10) {
  145.                   if (!(var1 instanceof PushbackInputStream)) {
  146.                      var1 = super.in = new PushbackInputStream(var1);
  147.                   }
  148.  
  149.                   ((PushbackInputStream)var1).unread(var6);
  150.                }
  151.             case -1:
  152.             case 10:
  153.                if (var5 == -1 && var4 == 0) {
  154.                   return null;
  155.                }
  156.  
  157.                return String.copyValueOf(var2, 0, var4);
  158.          }
  159.  
  160.          --var3;
  161.          if (var3 < 0) {
  162.             var2 = new char[var4 + 128];
  163.             var3 = var2.length - var4 - 1;
  164.             System.arraycopy(this.lineBuffer, 0, var2, 0, var4);
  165.             this.lineBuffer = var2;
  166.          }
  167.  
  168.          var2[var4++] = (char)var5;
  169.       }
  170.    }
  171.  
  172.    public final String readUTF() throws IOException {
  173.       return readUTF(this);
  174.    }
  175.  
  176.    public static final String readUTF(DataInput var0) throws IOException {
  177.       int var1 = var0.readUnsignedShort();
  178.       char[] var2 = new char[var1];
  179.       int var3 = 0;
  180.       int var4 = 0;
  181.  
  182.       while(var3 < var1) {
  183.          int var5 = var0.readUnsignedByte();
  184.          switch (var5 >> 4) {
  185.             case 0:
  186.             case 1:
  187.             case 2:
  188.             case 3:
  189.             case 4:
  190.             case 5:
  191.             case 6:
  192.             case 7:
  193.                ++var3;
  194.                var2[var4++] = (char)var5;
  195.                break;
  196.             case 8:
  197.             case 9:
  198.             case 10:
  199.             case 11:
  200.             default:
  201.                throw new UTFDataFormatException();
  202.             case 12:
  203.             case 13:
  204.                var3 += 2;
  205.                if (var3 > var1) {
  206.                   throw new UTFDataFormatException();
  207.                }
  208.  
  209.                int var8 = var0.readUnsignedByte();
  210.                if ((var8 & 192) != 128) {
  211.                   throw new UTFDataFormatException();
  212.                }
  213.  
  214.                var2[var4++] = (char)((var5 & 31) << 6 | var8 & 63);
  215.                break;
  216.             case 14:
  217.                var3 += 3;
  218.                if (var3 > var1) {
  219.                   throw new UTFDataFormatException();
  220.                }
  221.  
  222.                int var6 = var0.readUnsignedByte();
  223.                int var7 = var0.readUnsignedByte();
  224.                if ((var6 & 192) != 128 || (var7 & 192) != 128) {
  225.                   throw new UTFDataFormatException();
  226.                }
  227.  
  228.                var2[var4++] = (char)((var5 & 15) << 12 | (var6 & 63) << 6 | var7 & 63);
  229.          }
  230.       }
  231.  
  232.       return new String(var2, 0, var4);
  233.    }
  234. }
  235.