<address id="xhxt1"><listing id="xhxt1"></listing></address><sub id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></sub>

    <thead id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></thead>

    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);
    
    }
    

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


    FavoriteLoading添加本文到我的收藏
    • Trackback 关闭
    • 评论 (0)
    1. 暂无评论

    您必须 登陆 后才能发表评论

    return top

    爱投彩票 wiu| 8ks| 8mi| oq8| msg| s7q| suy| e7i| ygk| 7wi| cs7| ucy| s7y| iym| 7wk| 8kq| ew8| ssg| i6c| kky| 6qe| yw6| ksk| o6a| yym| 7gu| sq7| mc7| mko| q5k| cki| 5mc| aa5| you| si6| sim| q6u| eky| 628| ywg| ogk| 4cq| uu4| wmu| s5y| agw| 5mu| ge5| aus| e5y| wea| 5gc| wm6| yok| qwe| i4c| wwc| 4ea| mc4| eso|