⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datainputstream.java

📁 已经移植好的java虚拟机
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        int ch2 = read();        if ((ch1 | ch2) < 0) {             throw new EOFException();        }        return (ch1 << 8) + (ch2 << 0);    }    /**     * See the general contract of the <code>readChar</code>     * method of <code>DataInput</code>.     * <p>     * Bytes for this operation are read from the contained     * input stream.     *     * @return     the next two bytes of this input stream as a Unicode     *             character.     * @exception  EOFException  if this input stream reaches the end before     *               reading two bytes.     * @exception  IOException   if an I/O error occurs.     */    public final char readChar() throws IOException {        return (char)readUnsignedShort();    }    /**     * See the general contract of the <code>readInt</code>     * method of <code>DataInput</code>.     * <p>     * Bytes for this operation are read from the contained     * input stream.     *     * @return     the next four bytes of this input stream, interpreted as an     *             <code>int</code>.     * @exception  EOFException  if this input stream reaches the end before     *               reading four bytes.     * @exception  IOException   if an I/O error occurs.     */    public final int readInt() throws IOException {        int ch1 = read();        int ch2 = read();        int ch3 = read();        int ch4 = read();        if ((ch1 | ch2 | ch3 | ch4) < 0) {             throw new EOFException();        }        return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));    }    /**     * See the general contract of the <code>readLong</code>     * method of <code>DataInput</code>.     * <p>     * Bytes for this operation are read from the contained     * input stream.     *     * @return     the next eight bytes of this input stream, interpreted as a     *             <code>long</code>.     * @exception  EOFException  if this input stream reaches the end before     *               reading eight bytes.     * @exception  IOException   if an I/O error occurs.     */    public final long readLong() throws IOException {        return ((long)(readInt()) << 32) + (readInt() & 0xFFFFFFFFL);    }    /**     * See the general contract of the <code>readUTF</code>     * method of <code>DataInput</code>.     * <p>     * Bytes for this operation are read from the contained     * input stream.     *     * @return     a Unicode string.     * @exception  EOFException  if this input stream reaches the end before     *               reading all the bytes.     * @exception  IOException   if an I/O error occurs.     * @see        java.io.DataInputStream#readUTF(java.io.DataInput)     */    public final String readUTF() throws IOException {        return readUTF(this);    }    /**     * Reads from the     * stream <code>in</code> a representation     * of a Unicode  character string encoded in     * Java modified UTF-8 format; this string     * of characters  is then returned as a <code>String</code>.     * The details of the modified UTF-8 representation     * are  exactly the same as for the <code>readUTF</code>     * method of <code>DataInput</code>.     *     * @param      in   a data input stream.     * @return     a Unicode string.     * @exception  EOFException            if the input stream reaches the end     *             before all the bytes.     * @exception  IOException             if an I/O error occurs.     * @exception  UTFDataFormatException  if the bytes do not represent a     *             valid UTF-8 encoding of a Unicode string.     * @see        java.io.DataInputStream#readUnsignedShort()     */    public final static String readUTF(DataInput in) throws IOException {        int utflen = in.readUnsignedShort();		char str[] = new char[utflen];        byte bytearr [] = new byte[utflen];        int c, char2, char3;        int count = 0;		int strlen = 0;        in.readFully(bytearr, 0, utflen);        while (count < utflen) {            c = (int) bytearr[count] & 0xff;            switch (c >> 4) {                case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:                    /* 0xxxxxxx*/                    count++;                    str[strlen++] = (char)c;                    break;                case 12: case 13:                    /* 110x xxxx   10xx xxxx*/                    count += 2;                    if (count > utflen)                        throw new UTFDataFormatException();                    char2 = (int) bytearr[count-1];                    if ((char2 & 0xC0) != 0x80)                        throw new UTFDataFormatException();                    str[strlen++] = (char)(((c & 0x1F) << 6) | (char2 & 0x3F));                    break;                case 14:                    /* 1110 xxxx  10xx xxxx  10xx xxxx */                    count += 3;                    if (count > utflen)                        throw new UTFDataFormatException();                    char2 = (int) bytearr[count-2];                    char3 = (int) bytearr[count-1];                    if (((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80))                        throw new UTFDataFormatException();                    str[strlen++] = (char)(((c     & 0x0F) << 12) |                                           ((char2 & 0x3F) << 6)  |                                           ((char3 & 0x3F) << 0));                    break;                default:                    /* 10xx xxxx,  1111 xxxx */                    throw new UTFDataFormatException();                }        }        // The number of chars produced may be less than utflen        return new String(str, 0, strlen);    }    /**     * Skips over and discards <code>n</code> bytes of data from the     * input stream. The <code>skip</code> method may, for a variety of     * reasons, end up skipping over some smaller number of bytes,     * possibly <code>0</code>. The actual number of bytes skipped is     * returned.     * <p>     * This method     * simply performs <code>in.skip(n)</code>.     *     * @param      n   the number of bytes to be skipped.     * @return     the actual number of bytes skipped.     * @exception  IOException  if an I/O error occurs.     */    public long skip(long n) throws IOException {        return in.skip(n);    }    /**     * Returns the number of bytes that can be read from this input     * stream without blocking.     * <p>     * This method     * simply performs <code>in.available(n)</code> and     * returns the result.     *     * @return     the number of bytes that can be read from the input stream     *             without blocking.     * @exception  IOException  if an I/O error occurs.     */    public int available() throws IOException {        return in.available();    }    /**     * Closes this input stream and releases any system resources     * associated with the stream.     * This     * method simply performs <code>in.close()</code>.     *     * @exception  IOException  if an I/O error occurs.     */    public void close() throws IOException {        in.close();    }    /**     * Marks the current position in this input stream. A subsequent     * call to the <code>reset</code> method repositions this stream at     * the last marked position so that subsequent reads re-read the same bytes.     * <p>     * The <code>readlimit</code> argument tells this input stream to     * allow that many bytes to be read before the mark position gets     * invalidated.     * <p>     * This method simply performs <code>in.mark(readlimit)</code>.     *     * @param   readlimit   the maximum limit of bytes that can be read before     *                      the mark position becomes invalid.     */    public synchronized void mark(int readlimit) {        in.mark(readlimit);    }    /**     * Repositions this stream to the position at the time the     * <code>mark</code> method was last called on this input stream.     * <p>     * This method     * simply performs <code>in.reset()</code>.     * <p>     * Stream marks are intended to be used in     * situations where you need to read ahead a little to see what's in     * the stream. Often this is most easily done by invoking some     * general parser. If the stream is of the type handled by the     * parse, it just chugs along happily. If the stream is not of     * that type, the parser should toss an exception when it fails.     * If this happens within readlimit bytes, it allows the outer     * code to reset the stream and try another parser.     *     * @exception  IOException  if the stream has not been marked or if the     *             mark has been invalidated.     */    public synchronized void reset() throws IOException {        in.reset();    }    /**     * Tests if this input stream supports the <code>mark</code>     * and <code>reset</code> methods.     * This method     * simply performs <code>in.markSupported()</code>.     *     * @return  <code>true</code> if this stream type supports the     *          <code>mark</code> and <code>reset</code> method;     *          <code>false</code> otherwise.     */    public boolean markSupported() {        return in.markSupported();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -