转载自   Java IO: 其他字节流(上)

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

本小节会简要概括Java IO中的PushbackInputStream,SequenceInputStream和PrintStream。其中,最常用的是PrintStream,System.out和System.err都是PrintStream类型的变量,请查看Java IO: System.in, System.out, System.err浏览更多关于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);
}

Java IO: 其他字节流(上)相关推荐

  1. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

  2. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  3. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  4. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  5. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

    前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...

  6. 吃透Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的. 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握得很好,可以立即关闭文章.反之,你可以在后面得文章中寻找答案. ...

  7. java IO(输入输出) 字节流

    //输入流 package zhi_jie_liu;import java.io.*;public class Example01 {public static void main(String[] ...

  8. Java IO流---字节流

    IO流概述: IO:输入输出(input/output) 流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,流的本质是数据传输 IO流就是用来处理设备间数据传输问题的 常见应用 ...

  9. Java IO流 - 字节流的使用详细介绍

    文章目录 IO流的基本介绍 字节流的使用 文件字节输入流 创建字节输入流 每次读取一个字节 每次读取一个数组 一次读取全部字节 文件字节输出流 创建字节输出流 写入文件输出流 文件拷贝练习 IO流的基 ...

最新文章

  1. 死磕Java并发:Java内存模型之分析volatile
  2. 两个栈来实现一个队列的C++代码
  3. halcon学习笔记——(1)单摄像机标定
  4. Singleton设计模式(单实例)
  5. oracle打开文件模式无效,oracle expdp导入时 提示“ORA-39002: 操作无效 ORA-39070: 无法打开日志文件 ”...
  6. 前端es6文档大全,你想要的这都有
  7. Matlab使用EMD
  8. android dlna 小米电视盒子,小米电视DLNA投屏到电视步骤详解
  9. Linux中tar命令用法
  10. Ubuntu下snap挂代理下载加速方法
  11. C++——以任意数为底的对数
  12. python管理系统学习
  13. python编写背单词程序
  14. 终端节点、叶子节点和分支结点和非终端结点区别,数据结构常见误区答疑
  15. 如何申请试用MaxCompute 2.0
  16. 关于mysql的timestamp时间范围
  17. 并发编程之Disruptor框架介绍和高阶运用
  18. 【蓝桥杯】 历届试题 国王的烦恼(并查集)
  19. matlab奇异矩阵高效求逆,奇异矩阵求逆问题!!!
  20. 程序员表白程序,开放源码,不断更新

热门文章

  1. 队列的基础概念与经典题目(Leetcode题解-Python语言)
  2. 使用React hooks,些许又多了不少摸鱼时间
  3. Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表
  4. 上元节的灯会(灭)-区间dp
  5. Pycharm安装第三方库
  6. CF 1638 E. Colorful Operations set 区间平推
  7. 感性理解Berlekamp-Massey算法
  8. CF980D Perfect Groups
  9. CF1550F Jumping Around
  10. Star Way To Heaven (prim最小生成树) // [ NOIP提高组 2014]飞扬的小鸟(DP)