- 相关软件
>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
字节。
构造子
public DataInputStream(InputStream in)- 创建一个新的数据输入流,从指定输入流中读取数据。
-
- 参数:
- in - 输入流。
- 参数:
方法
public final int read(byte b[]) throws IOException- 将当前数据输入流中
byte.length
个字节数据读到一个字节数组中。 这个方法将阻塞直到有输入数据可用。DataInputStream
的read
方法,用三个参数b
,0
和b.length
调用它的基本输入流的具有三个参数的read
方法, 且将它的返回值返回。 -
- 参数:
- b - 读取数据的缓冲区。
- 返回值:
- 读入缓存区的字节总数;如果已读到流尾不再有数据可读则为
-1
。 - 抛出:
IOException
- 如果发生某个 I/O 错误。
- 覆盖:
- 类 FilterInputStream
中的 read
- 参见:
- in, read
- 参数:
public final int read(byte b[],
int off,
int len) throws IOException- 将当前数据输入流中
len
个字节数据读入一个字节数组中。 这个方法将阻塞直到有输入数据可用。DataInputStream
的read
方法,用相同参数调用它的基本输入流中的read
方法, 且将此方法的返回值返回。 -
- 参数:
- b - 读取数据的缓冲区。
- off - 读取数据的起始偏移。
- len - 读取的最大字节数。
- 返回值:
- 读入缓存区的字节总数;如果已读到流尾不再有数据可读则为
-1
。 - 抛出:
IOException
- 如果发生某个 I/O 错误。
- 覆盖:
- 类 FilterInputStream 中的 read
- 参见:
- in, read
- 参数:
public final void readFully(byte b[]) throws IOException- 从当前数据输入流中读取
b.length
个字节到该字节数组。 这个方法将重复从基本流中读取数据,直到读入所有的字节。 该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。 -
- 参数:
- b - 读取数据的缓冲区。
- 抛出:
EOFException
- 如果在读入所有的字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 参数:
public final void readFully(byte b[],
int off,
int len) throws IOException- 从当前数据输入流中恰好读取
len
个字节到该字节数组中。 这个方法将重复从基本流中读取数据,直到读入所有的字节。 该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。 -
- 参数:
- b - 读取数据的缓冲区。
- off - 读取数据的起始偏移。
- len - 待读入的字节数。
- 抛出:
EOFException
- 如果在读入所有的字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 参数:
public final int skipBytes(int n) throws IOException- 准确地跳过基本输入流中的
n
个字节。该方法将一直阻塞,直到所有的字节数据被跳过,或检测到了数据流尾或抛出异常。 -
- 参数:
- n - 跳过的字节数。
- 返回值:
- 跳过的字节数,总为
n
。 - 抛出:
EOFException
- 如果在跳过所有的字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参数:
public final boolean readBoolean() throws IOException- 从当前数据输入流中读一个
boolean
值。 此方法从基本输入流中读入一个单字节。0
表示false
。 任一其它值表示true
。 该方法将一直阻塞,直到该字节数据被读入,或检测到了数据流尾或抛出异常。 -
- 返回值:
- 读入的
boolean
值。
- 抛出:
EOFException
- 如果当前输入流已到达文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final byte readByte() throws IOException- 从当前数据输入流中读取一个有符号的 8 位数。 此方法从基本输入流中读入一个字节。 如果读入的字节是
b
, 且0 <= b <= 255
,
那么结果是:
(byte)(b)该方法将一直阻塞,直到该字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的作为一个有符号 8 位
byte
的下一个字节。
- 抛出:
EOFException
- 如果当前输入流已到达文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final int readUnsignedByte() throws IOException- 从当前数据输入流中读取一个无符号的 8 位数。 此方法从当前数据输入流的基本输入流中读入一个字节,并返回它。 该方法将一直阻塞,直到此字节被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下一个字节,解释为一个无符号的 8 位数。
- 抛出:
EOFException
- 如果当前输入流已到达文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final short readShort() throws IOException- 从当前数据输入流中读取一个有符号的 16 位数。 此方法从基本输入流中读入两个字节。 如果读入的两个字节,顺序为
b1
和b2
, 均在0
和255
之间, 那么结果等于:
(short)((b1 << 8) | b2)该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下两个字节,解释为一个有符号的 16 位数。
- 抛出:
EOFException
- 如果在读入两个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final int readUnsignedShort() throws IOException- 从当前数据输入流中读取一个无符号的 16 位数。 此方法从基本输入流中读入两个字节。 如果读入的字节,顺序为
b1
和b2
, 满足0 <= b1, b2 <= 255
,
那么结果等于:
(b1 << 8) | b2该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下两个字节,解释为一个无符号的 16 位数。
- 抛出:
EOFException
- 如果在读入两个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final char readChar() throws IOException- 从当前数据输入流中读取一个 Unicode 字符。 此方法从基本输入流中读入两个字节。 如果读入的字节,顺序为
b1
和b2
, 满足0 <= b1, b1 <= 255
,
那么结果等于:
(char)((b1 << 8) | b2)该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下两个字节,作为一个 Unicode 字符。
- 抛出:
EOFException
- 如果在读入两个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
public final int readInt() throws IOException- 从当前数据输入流中读取一个有符号的 32 位整数。 此方法从基本输入流中读入四个字节。 如果读入的字节,顺序为
b1
,b2
,b3
和b4
, 满足0 <= b1, b2,b3,b4 <= 255
,
那么结果等于:
(b1 << 24) | (b2 << 16) + (b3 << 8) +b4该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下四个字节,解释为一个
int
。
- 抛出:
EOFException
- 如果在读入四个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- in
- 返回值:
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
- 返回值:
public final float readFloat() throws IOException- 从当前数据输入流中读一个
float
值。 这个方法与readInt
方法一样读取一个int
值,然后使用类Float
中intBitsToFloat
方法将这个int
转换为一个float
值。
该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。 -
- 返回值:
- 当前输入流的下四个字节,解释为一个
float
。
- 抛出:
EOFException
- 如果在读入四个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- readInt, intBitsToFloat
- 返回值:
public final double readDouble() throws IOException- 从当前数据输入流中读一个
double
值。 这个方法同readLong
方法一样读取一个long
值,然后使用类Double
中的longBitsToDouble
方法将这个long
转换为一个double
。该方法将一直阻塞,直到此八个字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 当前输入流的下八个字节,解释为一个
double
。
- 抛出:
EOFException
- 如果在读入八个字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- readLong, longBitsToDouble
- 返回值:
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'
), 一个回车符紧跟一个换行符或输入流的末尾。 如果有行结束符,则它将作为返回串的一部分。该方法将一直阻塞,直到读取了一个换行符、一个回车符、或紧跟回车符的换行符,或检测到了数据流尾或抛出异常。
public final String readUTF() throws IOException- 从当前数据输入流中读取一个已用“修订的 UTF-8 格式”编码的串。
这个方法调用readUTF(this)
。关于此格式的更完整描述请参见readUTF(java.io.DataInput)
。该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。
-
- 返回值:
- 一个 Unicode 串。
- 抛出:
EOFException
- 如果在读入所有的字节前到达了文件尾。
- 抛出:
IOException
- 如果发生某个 I/O 错误。
- 参见:
- 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
- 参数:
- 前一则: CharArrayWriter
- 后一则: DataOutputStream
- Null 字符
TOP 10
您现在的位置: >技术沙龙 >程序设计 >Java >JDK API 参考 >java.io >类(Class) >DataInputStream