现在的位置: 首页 > 综合 > 正文

DataInputStream

2017年10月20日 ⁄ 综合 ⁄ 共 7580字 ⁄ 字号 评论关闭
  • 相关软件
    >DataInputStream 创建者:webmaster 更新时间:2005-12-17 04:38



    数据输入流可以使一个应用程序以与机器无关的方式从基本输入流中读取 Java 的基本数据类型。应用程序使用一个数据输出流输出数据,以后可使用一个数据输入流读入。

    数据输入流和数据输出流以稍加修订的 UTF-8 格式表示 Unicode 字符串。
    (关于更详细信息,请参看 X/Open Company Ltd., “文件系统安全
    UCS 转换格式 (FSS_UTF)”, X/Open 初步规范, 文档号:P316。这个信息也出现在 ISO/IEC 10646, Annex P。)

    所有在 '/u0001'
    '/u007F' 之间的字符被表示为一个单字节:

     

    0 位 0-7

    Null 字符 '/u0000' 和从
    '/u0080''/u07FF' 之间的字符被表示为两个字节:

     

     

    1 1 0 位 6-10
    1 0 位 0-5

    '/u0800'
    '/uFFFF' 之间的字符被表示为三个字节:

     

     

     

    1 1 1 0 位 12-15
    1 0 位 6-11
    1 0 位 0-5

    这种格式与“标准的”UTF-8 格式的区别如下:

    • Null 字符 '/u0000' 用两个字节而不是一个字节格式编码,所以编码后的字符串永不会包含空字符。
    • 只使用 1-字节、2-字节、3-字节格式。


    类 java.io.DataInputStream


    java.lang.Object
      |
      +----java.io.InputStream
          |
          +----java.io.FilterInputStream
                |
                +----java.io.DataInputStream


    public class DataInputStream
    extends FilterInputStream
    implements DataInput

    来自:
    JDK1.0
     
    参见:
     
    DataOutputStream



    构造子索引

    DataInputStream(InputStream)
    创建一个新的数据输入流,从指定输入流中读取数据。


    方法索引

    read(byte[])
    将当前数据输入流中 byte.length 个字节数据读到一个字节数组中。
    read(byte[], int, int)
    将当前数据输入流中 len 个字节数据读入一个字节数组中。
    readBoolean()
    从当前数据输入流中读取一个 boolean 值。
    readByte()
    从当前数据输入流中读取一个有符号的 8 位数。
    readChar()
    从当前数据输入流中读取一个 Unicode 字符。
    readDouble()
    从当前数据输入流中读一个 double 值。
    readFloat()
    从当前数据输入流中读一个 float 值。
    readFully(byte[])
    从当前数据输入流中读取 b.length 个字节到该字节数组。
    readFully(byte[], int, int)
    从当前数据输入流中恰好读取 len 个字节到该字节数组中。
    readInt()
    从当前数据输入流中读取一个有符号的 32 位整数。
    readLine()
    从当前数据输入流中读取文本的下一行。
    不推荐使用该方法。
    readLong()
    从当前数据输入流中读取一个有符号的 64 位整数。
    readShort()
    从当前数据输入流中读取一个有符号的 16 位数。
    readUnsignedByte()
    从当前数据输入流中读取一个无符号的 8 位数。
    readUnsignedShort()
    从当前数据输入流中读取一个无符号的 16 位数。
    readUTF()
    从当前数据输入流中读取一个已用“修订的 UTF-8 格式”编码的字符串。
    readUTF(DataInput)
    从指定的数据输入流中读取一个字符串。
    skipBytes(int)
    准确地跳过基本输入流中的 n 字节。



    构造子



    DataInputStream


    public DataInputStream(InputStream in)

    创建一个新的数据输入流,从指定输入流中读取数据。

     

     
    参数:
     
    in - 输入流。



    方法


    read


    public final int read(byte b[]) throws IOException

    将当前数据输入流中 byte.length 个字节数据读到一个字节数组中。 这个方法将阻塞直到有输入数据可用。

    DataInputStreamread 方法,用三个参数 b, 0b.length 调用它的基本输入流的具有三个参数的 read 方法, 且将它的返回值返回。

     

     
    参数:
     
    b - 读取数据的缓冲区。
     
    返回值:
     
    读入缓存区的字节总数;如果已读到流尾不再有数据可读则为 -1。  
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     
    FilterInputStream
    中的 read
     
    参见:
     
    in, read


    read


    public final int read(byte b[],
                int off,
              int len) throws IOException

    将当前数据输入流中 len 个字节数据读入一个字节数组中。 这个方法将阻塞直到有输入数据可用。

    DataInputStreamread 方法,用相同参数调用它的基本输入流中的 read 方法, 且将此方法的返回值返回。

     

     
    参数:
     
    b - 读取数据的缓冲区。
     
    off - 读取数据的起始偏移。
     
    len - 读取的最大字节数。
     
    返回值:
     
    读入缓存区的字节总数;如果已读到流尾不再有数据可读则为 -1。  
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    覆盖:
     
    FilterInputStream 中的 read
     
    参见:
     
    in, read


    readFully


    public final void readFully(byte b[]) throws IOException

    从当前数据输入流中读取 b.length 个字节到该字节数组。 这个方法将重复从基本流中读取数据,直到读入所有的字节。 该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    参数:
     
    b - 读取数据的缓冲区。
     
    抛出:
    EOFException
     
    如果在读入所有的字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readFully


    public final void readFully(byte b[],
                int off,
              int len) throws IOException

    从当前数据输入流中恰好读取 len 个字节到该字节数组中。 这个方法将重复从基本流中读取数据,直到读入所有的字节。 该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    参数:
     
    b - 读取数据的缓冲区。
     
    off - 读取数据的起始偏移。
     
    len - 待读入的字节数。
     
    抛出:
    EOFException
     
    如果在读入所有的字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    skipBytes


    public final int skipBytes(int n) throws IOException

    准确地跳过基本输入流中的 n个字节。该方法将一直阻塞,直到所有的字节数据被跳过,或检测到了数据流尾或抛出异常。

     

     
    参数:
     
    n - 跳过的字节数。
     
    返回值:
     
    跳过的字节数,总为 n
    抛出:
    EOFException
     
    如果在跳过所有的字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。


    readBoolean


    public final boolean readBoolean() throws IOException

    从当前数据输入流中读一个 boolean 值。 此方法从基本输入流中读入一个单字节。 0 表示 false。 任一其它值表示 true
    。 该方法将一直阻塞,直到该字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    读入的boolean值。
     
    抛出:
    EOFException
     
    如果当前输入流已到达文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readByte


    public final byte readByte() throws IOException

    从当前数据输入流中读取一个有符号的 8 位数。 此方法从基本输入流中读入一个字节。 如果读入的字节是 b, 且
    0 <= b <= 255,
    那么结果是:

        (byte)(b)

    该方法将一直阻塞,直到该字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的作为一个有符号 8 位byte 的下一个字节。
     
    抛出:
    EOFException
     
    如果当前输入流已到达文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readUnsignedByte


    public final int readUnsignedByte() throws IOException

    从当前数据输入流中读取一个无符号的 8 位数。 此方法从当前数据输入流的基本输入流中读入一个字节,并返回它。 该方法将一直阻塞,直到此字节被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下一个字节,解释为一个无符号的 8 位数。
     
    抛出:
    EOFException
     
    如果当前输入流已到达文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readShort


    public final short readShort() throws IOException

    从当前数据输入流中读取一个有符号的 16 位数。 此方法从基本输入流中读入两个字节。 如果读入的两个字节,顺序为 b1
    b2, 均在
    0255之间, 那么结果等于:

        (short)((b1 << 8) | b2)

    该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下两个字节,解释为一个有符号的 16 位数。
     
    抛出:
    EOFException
     
    如果在读入两个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readUnsignedShort


    public final int readUnsignedShort() throws IOException

    从当前数据输入流中读取一个无符号的 16 位数。 此方法从基本输入流中读入两个字节。 如果读入的字节,顺序为 b1
    b2, 满足 0 <= b1, b2 <= 255,
    那么结果等于:

        (b1 << 8) | b2

    该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下两个字节,解释为一个无符号的 16 位数。
     
    抛出:
    EOFException
     
    如果在读入两个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readChar


    public final char readChar() throws IOException

    从当前数据输入流中读取一个 Unicode 字符。 此方法从基本输入流中读入两个字节。 如果读入的字节,顺序为 b1
    b2, 满足 0 <= b1, b1 <= 255,
    那么结果等于:

        (char)((b1 << 8) | b2)

    该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下两个字节,作为一个 Unicode 字符。
     
    抛出:
    EOFException
     
    如果在读入两个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readInt


    public final int readInt() throws IOException

    从当前数据输入流中读取一个有符号的 32 位整数。 此方法从基本输入流中读入四个字节。 如果读入的字节,顺序为 b1
    b2,b3b4, 满足
    0 <= b1, b2,b3,b4 <= 255,
    那么结果等于:

        (b1 << 24) | (b2 << 16) + (b3 << 8) +b4

    该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下四个字节,解释为一个 int
     
    抛出:
    EOFException
     
    如果在读入四个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readLong


    public final long readLong() throws IOException

    从当前数据输入流中读取一个有符号的 64 位整数。 此方法从基本输入流中读入八个字节。 如果读入的字节,顺序为
    b1, b2, b3,
    b4, b5, b6,
    b7, 和 b8,当:

        0 <= b1, b2, b3, b4, b5, b6, b7, b8 <= 255,

    相应的结果等于:

     


      ((long)b1 << 56) + ((long)b2 << 48) +
        ((long)b3 << 40) + ((long)b4 << 32) +
        ((long)b5 << 24) + (b6 << 16) +
        (b7 << 8) + b8

    该方法将一直阻塞,直到此八个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下八个字节,解释为一个 long
     
    抛出:
    EOFException
     
    如果在读入八个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    in


    readFloat


    public final float readFloat() throws IOException

    从当前数据输入流中读一个 float 值。 这个方法与
    readInt 方法一样读取一个 int 值,然后使用类
    FloatintBitsToFloat 方法将这个
    int 转换为一个 float 值。
    该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下四个字节,解释为一个 float
     
    抛出:
    EOFException
     
    如果在读入四个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    readInt, intBitsToFloat


    readDouble


    public final double readDouble() throws IOException

    从当前数据输入流中读一个 double 值。 这个方法同
    readLong 方法一样读取一个
    long 值,然后使用类
    Double 中的 longBitsToDouble 方法将这个 long 转换为一个 double

    该方法将一直阻塞,直到此八个字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下八个字节,解释为一个 double
     
    抛出:
    EOFException
     
    如果在读入八个字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    readLong, longBitsToDouble


    readLine


    public final String readLine() throws IOException

    注意:不推荐使用 readLine() 方法。
    该方法不能恰当地把字节转换成字符。
    同 JDK 1.1 版中的类似,读取文本行的最佳方法是采用 BufferedReader.readLine() 方法。
    使用类
    DataInputStream 读取行的程序,能转换为使用
    BufferedReader 的代码,通过置换以下代码
        DataInputStream d = new DataInputStream(in);

        BufferedReader d
            = new BufferedReader(new InputStreamReader(in));
         

     

    从当前数据输入流中读取文本的下一行。 这个方法连续地从基本输入流中读取字节直到一个文本行的末尾。

    一个文本行结束于一个回车符('/r'), 一个换行符
    ('/n'), 一个回车符紧跟一个换行符或输入流的末尾。 如果有行结束符,则它将作为返回串的一部分。

    该方法将一直阻塞,直到读取了一个换行符、一个回车符、或紧跟回车符的换行符,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    当前输入流的下一行文本;如果在到达文件尾前没有可再读取的字节,则为 null
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    readLine, in


    readUTF


    public final String readUTF() throws IOException

    从当前数据输入流中读取一个已用“修订的 UTF-8 格式”编码的串。
    这个方法调用 readUTF(this)。关于此格式的更完整描述请参见 readUTF(java.io.DataInput)

    该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    返回值:
     
    一个 Unicode 串。
     
    抛出:
    EOFException
     
    如果在读入所有的字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    参见:
     
    readUTF


    readUTF


    public static final String readUTF(DataInput in) throws IOException

    从指定的数据输入流中读取一个串。 这个串已用“修订的 UTF-8 格式”编码。

    前两个字节以同 readUnsignedShort 方法一样的机制被读入。这个值给出了编码字符串中剩余的字节数(注:不是结果字符串的长度)。然后剩余的字节被看作是已用 UTF-8 格式编码的字符,并且被转换为字符。

    该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

     

     
    参数:
     
    in - 一个数据输入流。
     
    返回值:
     
    一个 Unicode 串。
     
    抛出:
    EOFException
     
    如果在读入所有的字节前到达了文件尾。
     
    抛出:
    IOException
     
    如果发生某个 I/O 错误。
     
    抛出:
    UTFDataFormatException
     
    如果此字节不表示一个 Unicode 串的合法 UTF-8 编码。
     
    参见:
     
    readUnsignedShort

    相关文章

    本页查看次数:1753

抱歉!评论已关闭.