DataInputStream

来源:互联网 发布:数据库原理及应用视频 编辑:程序博客网 时间:2024/05/22 05:07
树结构图
  • EDN系统
  • 图形图像
  • 网络安全
  • 项目专题
  • WEB开发
  • 办公系列
  • 操作系统
  • 数据库
  • 程序设计
TOP 10
  • Ftp 子命令
  • MSN在线客服功能模块使…
  • DataInputStr…
  • 在Foxmail中如何使…
  • 会员卡使用方法说明
  • BigDecimal
  • Windows2003 …
  • BigInteger
  • 兼容性问题疑难解答
  • BufferedInpu…
您现在的位置: >技术沙龙 >程序设计 >Java >JDK API 参考 >java.io >类(Class) >DataInputStream
  • 相关软件
    >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' 之间的字符被表示为两个字节:


      110位 6-10
      10位 0-5


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

      1110位 12-15
      10位 6-11
      10位 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