Java IO: ByteArray和Filter

作者: Jakob Jenkov 译者: 李璟([email protected])

本小节会简要概括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

时间: 2024-10-29 03:51:36

Java IO: ByteArray和Filter的相关文章

java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)

java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io.File.listFiles(FilenameFilter filter)方法的声明: public File[] listFiles(FilenameFilter filter) 参数 filter - 文件名过滤器 返回值 该方法返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的

Java IO 学习总结 学习手册总结

Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 代码 github地址:https://github.com/loveincode/StudyTest/tree/master/src/IO Java.io 包的范围 java.io 包并没有涵盖所有输入输出类型.例如,并不包含GUI或者网页上的输入输出,这些输入和输出在其它地方都涉及,比如Swing工程中的JFC (Java Foundati

Java IO教程

1  Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: System.in, System.out, and System.error 8 Java IO: 流 9 Java IO: Input Parsing(暂无翻译,处理中) 10 Java IO: Readers and Writers 11 Java IO: 并发IO 12 Java IO: 异常

spark程序异常:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs

命令: java -jar myspark-1.0-SNAPSHOT.jar myspark-1.0-SNAPSHOT.jar hdfs://single:9000/input/word.txt hdfs://single:9000/output/out1 错误信息: .......... 14/11/23 06:14:18 INFO SparkDeploySchedulerBackend: Granted executor ID app-20141123061418-0011/0 on hos

1.java.io包中定义了多个流类型来实现输入和输出功能,

1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B.字节流和字符流 C.节点流和处理流   D.File stream E.Pipe stream F.Random stream G.Filter stream

java.io.File的基本使用以及关于Windows中大小写问题

package fengke.filedemo; import java.io.File;import java.io.IOException;/** * java.io.File的基本使用以及关于Windows中大小写问题 * @author 锋客 *   注意:文件创建的异常:默认路径与绝对路径的问题:多级目录的创建 *       掌握三种构造方法:不能用于文件内容的访问. * */ public class FileDemo {    /* File类只用于表示文件(目录)的信息(名称.

java.io.FileNotFoundException: antlr-2.7.7.jar (系统找不到指定的路径。)[待解决]

严重: Failed to destroy the filter named [struts2] of type [org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter]java.lang.IllegalStateException: java.io.FileNotFoundException: E:\apache-tomcat-8.0.37\webapps\20170317-JavaEE-SSH\WEB-IN

Java web 实现 之 Filter分析ip统计网站的访问次数

统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer> 整个网站只需要一个Map即可! Map什么时候创建(使用ServletContextListener,在服务器启动时完成创建,并只在到ServletContext中),Map保存到哪里!(Map保存到ServletContext中!!!) Map需要在Filter中用来保存数据 Map需要在页面使用,

java ------ IO(从基础到加强)

IO基础到加强 基础篇 一.一些基础知识概念 1.文件的逻辑结构 流式文件 记录式文件 2.文件的存取方法 顺序存取 随机存取 3.文件的使用 操作接口 应用程序接口 4.流的定义和作用 流的定义.方向性和读/写操作 流采用缓冲区技术 流的作用:简单的说就是控制文件的输入和输出 5.流的存在 通过这个图,就可以很好的理解输入流和输出流,它们的命名是以程序为参展点,写进程序来,就是要用输入流,写出程序(写到文件中)就是要用输出流. 二.输入.输出流 主要分为两大类:字节流和字符流 1.字节流 (1