zoukankan      html  css  js  c++  java
  • 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()读取。代码如下:

    1 PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\data\input.txt"));
    2  
    3 int data = input.read();
    4  
    5 input.unread(data);

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

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

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

    SequenceInputStream

    原文链接

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

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

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

    PrintStream

    原文链接

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

    01 PrintStream output = new PrintStream(outputStream);
    02  
    03 output.print(true);
    04  
    05 output.print((int123);
    06  
    07 output.print((float123.456);
    08  
    09 output.printf(Locale.UK, "Text + data: %1$"123);
    10  
    11 output.close();

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

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

    1 public PrintStream printf(String format, Object ... args) {
    2  
    3     return format(format, args);
    4  
    5 }

    原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: 其他字节流(上)

  • 相关阅读:
    Python 线程池,进程池,协程,和其他
    python 类的特殊成员方法
    Python 进程,线程,协程
    Python Socket第二篇(socketserver)
    Python 面向对象
    Python Socket
    saltstack 基础
    Python 面向对象学习
    Python 常用模块
    日志滚动工具
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323952.html
Copyright © 2011-2022 走看看