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

📄 randomaccessfileorarray.java

📁 源码包含生成 PDF 和 HTML 的类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                rf.seek(pos);        }        else            arrayInPtr = pos;    }        public void seek(long pos) throws IOException {        seek((int)pos);    }        public int getFilePointer() throws IOException {        insureOpen();        int n = isBack ? 1 : 0;        if (arrayIn == null) {            return (int)(plainRandomAccess ? trf.getFilePointer() : rf.getFilePointer()) - n - startOffset;        }        else            return arrayInPtr - n - startOffset;    }        public boolean readBoolean() throws IOException {        int ch = this.read();        if (ch < 0)            throw new EOFException();        return (ch != 0);    }        public byte readByte() throws IOException {        int ch = this.read();        if (ch < 0)            throw new EOFException();        return (byte)(ch);    }        public int readUnsignedByte() throws IOException {        int ch = this.read();        if (ch < 0)            throw new EOFException();        return ch;    }        public short readShort() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (short)((ch1 << 8) + ch2);    }        /**     * Reads a signed 16-bit number from this stream in little-endian order.     * The method reads two     * bytes from this stream, starting at the current stream pointer.     * If the two bytes read, in order, are     * <code>b1</code> and <code>b2</code>, where each of the two values is     * between <code>0</code> and <code>255</code>, inclusive, then the     * result is equal to:     * <blockquote><pre>     *     (short)((b2 &lt;&lt; 8) | b1)     * </pre></blockquote>     * <p>     * This method blocks until the two bytes are read, the end of the     * stream is detected, or an exception is thrown.     *     * @return     the next two bytes of this stream, interpreted as a signed     *             16-bit number.     * @exception  EOFException  if this stream reaches the end before reading     *               two bytes.     * @exception  IOException   if an I/O error occurs.     */    public final short readShortLE() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (short)((ch2 << 8) + (ch1 << 0));    }        public int readUnsignedShort() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (ch1 << 8) + ch2;    }        /**     * Reads an unsigned 16-bit number from this stream in little-endian order.     * This method reads     * two bytes from the stream, starting at the current stream pointer.     * If the bytes read, in order, are     * <code>b1</code> and <code>b2</code>, where     * <code>0&nbsp;&lt;=&nbsp;b1, b2&nbsp;&lt;=&nbsp;255</code>,     * then the result is equal to:     * <blockquote><pre>     *     (b2 &lt;&lt; 8) | b1     * </pre></blockquote>     * <p>     * This method blocks until the two bytes are read, the end of the     * stream is detected, or an exception is thrown.     *     * @return     the next two bytes of this stream, interpreted as an     *             unsigned 16-bit integer.     * @exception  EOFException  if this stream reaches the end before reading     *               two bytes.     * @exception  IOException   if an I/O error occurs.     */    public final int readUnsignedShortLE() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (ch2 << 8) + (ch1 << 0);    }        public char readChar() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (char)((ch1 << 8) + ch2);    }        /**     * Reads a Unicode character from this stream in little-endian order.     * This method reads two     * bytes from the stream, starting at the current stream pointer.     * If the bytes read, in order, are     * <code>b1</code> and <code>b2</code>, where     * <code>0&nbsp;&lt;=&nbsp;b1,&nbsp;b2&nbsp;&lt;=&nbsp;255</code>,     * then the result is equal to:     * <blockquote><pre>     *     (char)((b2 &lt;&lt; 8) | b1)     * </pre></blockquote>     * <p>     * This method blocks until the two bytes are read, the end of the     * stream is detected, or an exception is thrown.     *     * @return     the next two bytes of this stream as a Unicode character.     * @exception  EOFException  if this stream reaches the end before reading     *               two bytes.     * @exception  IOException   if an I/O error occurs.     */    public final char readCharLE() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        if ((ch1 | ch2) < 0)            throw new EOFException();        return (char)((ch2 << 8) + (ch1 << 0));    }        public int readInt() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        int ch3 = this.read();        int ch4 = this.read();        if ((ch1 | ch2 | ch3 | ch4) < 0)            throw new EOFException();        return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + ch4);    }        /**     * Reads a signed 32-bit integer from this stream in little-endian order.     * This method reads 4     * bytes from the stream, starting at the current stream pointer.     * If the bytes read, in order, are <code>b1</code>,     * <code>b2</code>, <code>b3</code>, and <code>b4</code>, where     * <code>0&nbsp;&lt;=&nbsp;b1, b2, b3, b4&nbsp;&lt;=&nbsp;255</code>,     * then the result is equal to:     * <blockquote><pre>     *     (b4 &lt;&lt; 24) | (b3 &lt;&lt; 16) + (b2 &lt;&lt; 8) + b1     * </pre></blockquote>     * <p>     * This method blocks until the four bytes are read, the end of the     * stream is detected, or an exception is thrown.     *     * @return     the next four bytes of this stream, interpreted as an     *             <code>int</code>.     * @exception  EOFException  if this stream reaches the end before reading     *               four bytes.     * @exception  IOException   if an I/O error occurs.     */    public final int readIntLE() throws IOException {        int ch1 = this.read();        int ch2 = this.read();        int ch3 = this.read();        int ch4 = this.read();        if ((ch1 | ch2 | ch3 | ch4) < 0)            throw new EOFException();        return ((ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0));    }        /**     * Reads an unsigned 32-bit integer from this stream. This method reads 4     * bytes from the stream, starting at the current stream pointer.     * If the bytes read, in order, are <code>b1</code>,     * <code>b2</code>, <code>b3</code>, and <code>b4</code>, where     * <code>0&nbsp;&lt;=&nbsp;b1, b2, b3, b4&nbsp;&lt;=&nbsp;255</code>,     * then the result is equal to:     * <blockquote><pre>     *     (b1 &lt;&lt; 24) | (b2 &lt;&lt; 16) + (b3 &lt;&lt; 8) + b4     * </pre></blockquote>     * <p>     * This method blocks until the four bytes are read, the end of the     * stream is detected, or an exception is thrown.     *     * @return     the next four bytes of this stream, interpreted as a     *             <code>long</code>.     * @exception  EOFException  if this stream reaches the end before reading     *               four bytes.     * @exception  IOException   if an I/O error occurs.     */    public final long readUnsignedInt() throws IOException {        long ch1 = this.read();        long ch2 = this.read();        long ch3 = this.read();        long ch4 = this.read();        if ((ch1 | ch2 | ch3 | ch4) < 0)            throw new EOFException();        return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));    }        public final long readUnsignedIntLE() throws IOException {        long ch1 = this.read();        long ch2 = this.read();        long ch3 = this.read();        long ch4 = this.read();        if ((ch1 | ch2 | ch3 | ch4) < 0)            throw new EOFException();        return ((ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0));    }        public long readLong() throws IOException {        return ((long)(readInt()) << 32) + (readInt() & 0xFFFFFFFFL);    }        public final long readLongLE() throws IOException {        int i1 = readIntLE();        int i2 = readIntLE();        return ((long)i2 << 32) + (i1 & 0xFFFFFFFFL);    }        public float readFloat() throws IOException {        return Float.intBitsToFloat(readInt());    }        public final float readFloatLE() throws IOException {        return Float.intBitsToFloat(readIntLE());    }        public double readDouble() throws IOException {        return Double.longBitsToDouble(readLong());    }        public final double readDoubleLE() throws IOException {        return Double.longBitsToDouble(readLongLE());    }        public String readLine() throws IOException {        StringBuffer input = new StringBuffer();        int c = -1;        boolean eol = false;                while (!eol) {            switch (c = read()) {                case -1:                case '\n':                    eol = true;                    break;                case '\r':                    eol = true;                    int cur = getFilePointer();                    if ((read()) != '\n') {                        seek(cur);                    }                    break;                default:                    input.append((char)c);                    break;            }        }                if ((c == -1) && (input.length() == 0)) {            return null;        }        return input.toString();    }        public String readUTF() throws IOException {        return DataInputStream.readUTF(this);    }        /** Getter for property startOffset.     * @return Value of property startOffset.     *     */    public int getStartOffset() {        return this.startOffset;    }        /** Setter for property startOffset.     * @param startOffset New value of property startOffset.     *     */    public void setStartOffset(int startOffset) {        this.startOffset = startOffset;    }    /**     * @since 2.0.8     */    public java.nio.ByteBuffer getNioByteBuffer() throws IOException {    	if (filename != null) {    		FileChannel channel;            if (plainRandomAccess)                channel = trf.getChannel();            else                channel = rf.getChannel();            return channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());    	}    	return java.nio.ByteBuffer.wrap(arrayIn);    }}

⌨️ 快捷键说明

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