universalinputstream.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 620 行 · 第 1/2 页

JAVA
620
字号
/* * @(#)UniversalInputStream.java	1.10 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * */package com.sun.cdc.io.j2me;import java.io.*;import com.sun.cdc.i18n.*;/** * This class is a combination of several J2SE stream classes. It implements * the InputStream and DataInput interfaces. It also implements a few simple text parsing * functions that are reminiscent of scanf. Lastly the stream may, in certain cases, be * 'seeked' and have a timeout value associated with it. * * @author  Nik Shaylor * @version 1.0 1/7/2000 */public abstract class UniversalInputStream extends InputStream implements DataInput {//// Binary input//    /**     * See the general contract of the <code>readFully</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @param      b   the buffer into which the data is read.     * @exception  EOFException  if this input stream reaches the end before     *               reading all the bytes.     * @exception  IOException   if an I/O error occurs.     */    public void readFully(byte b[]) throws IOException {        readFully(b, 0, b.length);    }    /**     * See the general contract of the <code>readFully</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @param      b     the buffer into which the data is read.     * @param      off   the start offset of the data.     * @param      len   the number of bytes to read.     * @exception  EOFException  if this input stream reaches the end before     *               reading all the bytes.     * @exception  IOException   if an I/O error occurs.     */    public void readFully(byte b[], int off, int len) throws IOException {        if (len < 0)            throw new IndexOutOfBoundsException();        int n = 0;        while (n < len) {            int count = read(b, off + n, len - n);            if (count < 0)                throw new EOFException();            n += count;        }    }    /**     * See the general contract of the <code>skipBytes</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @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 int skipBytes(int n) throws IOException {        int total = 0;        int cur = 0;        while ((total<n) && ((cur = (int) skip(n-total)) > 0)) {            total += cur;        }        return total;    }    /**     * See the general contract of the <code>readBoolean</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @return     the <code>boolean</code> value read.     * @exception  EOFException  if this input stream has reached the end.     * @exception  IOException   if an I/O error occurs.     */    public boolean readBoolean() throws IOException {        int ch = read();        if (ch < 0)            throw new EOFException();        return (ch != 0);    }    /**     * See the general contract of the <code>readByte</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @return     the next byte of this input stream as a signed 8-bit     *             <code>byte</code>.     * @exception  EOFException  if this input stream has reached the end.     * @exception  IOException   if an I/O error occurs.     */    public byte readByte() throws IOException {        int ch = read();        if (ch < 0)            throw new EOFException();        return (byte)(ch);    }    /**     * See the general contract of the <code>readUnsignedByte</code>     * method of <code>DataInput</code>.     * <p>     * Bytes     * for this operation are read from the contained     * input stream.     *     * @return     the next byte of this input stream, interpreted as an     *             unsigned 8-bit number.     * @exception  EOFException  if this input stream has reached the end.     * @exception  IOException   if an I/O error occurs.     */    public int readUnsignedByte() throws IOException {        int ch = read();        if (ch < 0)            throw new EOFException();        return ch;    }    /**     * See the general contract of the <code>readShort</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, interpreted as a     *             signed 16-bit number.     * @exception  EOFException  if this input stream reaches the end before     *               reading two bytes.     * @exception  IOException   if an I/O error occurs.     */    public short readShort() throws IOException {        int ch1 = read();        int ch2 = read();        if ((ch1 | ch2) < 0)             throw new EOFException();        return (short)((ch1 << 8) + (ch2 << 0));    }    /**     * See the general contract of the <code>readUnsignedShort</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, interpreted as an     *             unsigned 16-bit integer.     * @exception  EOFException  if this input stream reaches the end before     *               reading two bytes.     * @exception  IOException   if an I/O error occurs.     */    public int readUnsignedShort() throws IOException {        int ch1 = read();        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 char readChar() throws IOException {        int ch1 = read();        int ch2 = read();        if ((ch1 | ch2) < 0)             throw new EOFException();        return (char)((ch1 << 8) + (ch2 << 0));    }    /**     * 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 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 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 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>.     *

⌨️ 快捷键说明

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