博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO: 其他字节流(上)
阅读量:6301 次
发布时间:2019-06-22

本文共 1630 字,大约阅读时间需要 5 分钟。

本小节会简要概括Java IO中的PushbackInputStream,SequenceInputStream和PrintStream。其中,最常用的是PrintStream,System.out和System.err都是PrintStream类型的变量,请查看浏览更多关于System.out和System.err的信息。

PushbackInputStream

PushbackInputStream用于解析InputStream内的数据。有时候你需要提前知道接下来将要读取到的字节内容,才能判断用何种方式进行数据解析。PushBackInputStream允许你这么做,你可以把读取到的字节重新推回到InputStream中,以便再次通过read()读取。代码如下:

PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"));int data = input.read();input.unread(data);

可以通过PushBackInputStream的构造函数设置推回缓冲区的大小,代码如下:

PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"), 8);

这个例子设置了8个字节的缓冲区,意味着你最多可以重新读取8个字节的数据。

SequenceInputStream

SequenceInputStream把一个或者多个InputStream整合起来,形成一个逻辑连贯的输入流。当读取SequenceInputStream时,会先从第一个输入流中读取,完成之后再从第二个输入流读取,以此推类。代码如下:

InputStream input1 = new FileInputStream("c:\\data\\file1.txt");InputStream input2 = new FileInputStream("c:\\data\\file2.txt");InputStream combined = new SequenceInputStream(input1, input2);

通过SequenceInputStream,例子中的2个InputStream使用起来就如同只有一个InputStream一样(译者注:SequenceInputStream的read()方法会在读取到当前流末尾时,关闭流,并把当前流指向逻辑链中的下一个流,最后返回新的当前流的read()值)。

PrintStream

PrintStream允许你把格式化数据写入到底层OutputStream中。比如,写入格式化成文本的int,long以及其他原始数据类型到输出流中,而非它们的字节数据。代码如下:

PrintStream output = new PrintStream(outputStream);output.print(true);output.print((int) 123);output.print((float) 123.456);output.printf(Locale.UK, "Text + data: %1$", 123);output.close();

PrintStream包含2个强大的函数,分别是format()和printf()(这两个函数几乎做了一样的事情,但是C程序员会更熟悉printf())。

译者注:其中一个printf()函数实现如下:

public PrintStream printf(String format, Object ... args) {    return format(format, args);}
  • 转载自 
你可能感兴趣的文章
从根域到客户机,智能的DNS
查看>>
2K&4K高清播放时代的主流
查看>>
实现第三方模块echo使用
查看>>
MySQL-Proxy读写分流
查看>>
Python 高阶函数
查看>>
Citrix xenserver 安装使用
查看>>
ovirt官方安装文档 附录D
查看>>
阿里云云服务器硬盘分区及挂载
查看>>
samba服务
查看>>
PHP魔术法__set和__get
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
DHCP
查看>>