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: 其他字节流(上)

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323952.html
Copyright © 2011-2022 走看看