zoukankan      html  css  js  c++  java
  • Java IO: ByteArray和Filter

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

    本小节会简要概括Java IO中字节数组与过滤器的输入输出流,主要涉及以下4个类型的流:ByteArrayInputStream,ByteArrayOutputStream,FilterInputStream,FilterOutputStream。请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理。

    ByteArrayInputStream

    原文链接

    ByteArrayInputStream允许你从字节数组中读取字节流数据,代码如下:

    01 byte[] bytes = ... //get byte array from somewhere.
    02  
    03 InputStream input = new ByteArrayInputStream(bytes);
    04  
    05 int data = input.read();
    06  
    07 while(data != -1) {
    08  
    09     //do something with data
    10  
    11     data = input.read();
    12  
    13 }
    14  
    15 input.close();

    如果数据存储在数组中,ByteArrayInputStream可以很方便地读取数据。如果你有一个InputStream变量,又想从数组中读取数据呢?很简单,只需要把字节数组传递给ByteArrayInputStream的构造函数,在把这个ByteArrayInputStream赋值给InputStream变量就可以了(译者注:InputStream是所有字节输入流流的基类,Reader是所有字符输入流的基类,OutputStream与Writer同理)。

    ByteArrayOutputStream

    原文链接

    ByteArrayOutputStream允许你以数组的形式获取写入到该输出流中的数据,代码如下:

    1 ByteArrayOutputStream output = new ByteArrayOutputStream();
    2  
    3 //write data to output stream
    4  
    5 byte[] bytes = output.toByteArray();

    FilterInputStream

    原文链接

    FilterInputStream是实现自定义过滤输入流的基类,基本上它仅仅只是覆盖了InputStream中的所有方法。

    就我自己而言,我没发现这个类明显的用途。除了构造函数取一个InputStream变量作为参数之外,我没看到FilterInputStream任何对InputStream新增或者修改的地方。如果你选择继承FilterInputStream实现自定义的类,同样也可以直接继承自InputStream从而避免额外的类层级结构。

    FilterOutputStream

    原文链接

    内容同FilterInputStream,不再赘述。

    原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: ByteArray和Filter

  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323927.html
Copyright © 2011-2022 走看看