nik*_*hil 6 java io inputstream datainputstream
我有以下声明:
DataInputStream is = new DataInputStream(process.getInputStream());
我想打印此输入流的内容,但我不知道此流的大小.我该如何阅读此流并打印出来?
所有Streams都很常见,事先并不知道长度.使用标准InputStream通常的解决方案是简单地调用read直到-1返回.
但我相信,你已经包装标准InputStream有DataInputStream一个很好的理由:为了解析二进制数据.(注意:Scanner仅用于文本数据.)
该JavaDoc中为DataInputStream您展示这一类有两种不同的方式来表示EOF -每个方法要么返回-1或抛出EOFException.经验法则是:
InputStream使用"返回-1"约定,InputStream抛出EOFException.readShort例如,如果您使用,则读取直到抛出异常,如果您使用"read()",请执行此操作直到-1返回.
提示:在开始时要非常小心并查找您使用的每种方法DataInputStream- 经验法则可能会中断.
重复调用is.read(byte[]),传递预先分配的缓冲区(您可以继续重复使用相同的缓冲区)。该函数将返回实际读取的字节数,或在流末尾返回 -1(在这种情况下,停止):
byte[] buf = new byte[8192];
int nread;
while ((nread = is.read(buf)) >= 0) {
// process the first `nread` bytes of `buf`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9543 次 |
| 最近记录: |