review29
数组流
流的源和目的地除了可以是文件外,还可以是计算机内存。
1.字节数组流
字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream分别使用字节数组作为流的源和目的地。
ByteArrayInputStream的构造方法如下:
ByteArrayInputStrem(byte[] buf);
ByteArrayInputStrem(byte[] buf, int offset, int length);
第一个构造方法构造的字节数组流的源是参数buf指定的数组的全部字节单元,第二个构造方法的字节数组的源是buf指定的数组从offset处按顺序取的length个字节单元。
ByteArrayOutputStream流的构造方法如下:
ByteArrayOutputStream();
ByteArrayOutputStream(int size);
第一个构造方法构造的字节数组输出流指向一个默认大小为32字节的缓存区,如果输出流向缓冲区写入的字节个数大于缓冲区时,缓冲区的容量会自动增加。第二个构造方法构造的字节数组输出流指向的缓存区的初始大小由参数size指定,如果输出流向缓冲区写入的字节个数大于缓冲区时,缓冲区的容量会自动增加。
字节数组输出流调用public void write(int b);方法可以顺序地向缓冲区写入一个字节;调用public void write(byte[] b, int off, int len);方法可以将参数b中指定的len个字节顺序地写入缓冲区,参数off指定从b中写出的字节的起始位置:调用public byte[] toByteArray()方法可以返回输出流写入到缓冲区的全部字节。
2.字符数组流
与字符数组流对应的是字符数组流CharArrayReader和CharArrayWriter类,字符数组流分别使用字符数组作为流的源和目标。
代码展示如下所示:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.IOException; public class Test01 { public static void main(String[] args) {
// TODO Auto-generated method stub try {
ByteArrayOutputStream outByte = new ByteArrayOutputStream();
byte [] byteContent = " mid-autumn festival".getBytes();
outByte.write(byteContent);//将字节数据写入到缓冲区中
ByteArrayInputStream inByte = new ByteArrayInputStream(outByte.toByteArray());
byte backByte [] = new byte[outByte.toByteArray().length];
inByte.read(backByte);
System.out.println(new String(backByte)); CharArrayWriter outChar = new CharArrayWriter();
char [] charContent = "中秋快乐".toCharArray();
outChar.write(charContent);//将字符数据写入到缓冲区
CharArrayReader inChar = new CharArrayReader(outChar.toCharArray());//将缓冲区的数据转化为字符数组形式
char backChar[] = new char[outChar.toCharArray().length];
inChar.read(backChar);
System.out.println(new String(backChar)); }
catch (IOException e) {} } }
程序运行之后,结果如下所示:

解释上述代码:
先创建字节数组输出流对象,然后将一个字节数组写入缓冲区中。
将缓冲区中的字节数组转化后作为创建字节数组输入流对象的参数。创建输入流对象后,利用read(byte []b)方法将原先字节数组中的数据读入到b中再输出。
字符数组输出流和输入流对象的创建过程类似。
ByteArrayOutputStream或ByteArrayInputStream不需要关闭流
review29的更多相关文章
随机推荐
- sublime Text的一些用法(emmet插件、)
在学的过程中,看到了一个非常方便的html的标签的写法:,插件emmet 一.安装emmet 看清楚哦~~这是Sublime text 3不是2的版本,两者的安装还是有区别的1 ONE:建议到官方下载 ...
- 学习编译并运行C代码
以<UNIX网络编程>中的代码为例,学习如何编译并运行C代码. 根据 UNIX网络编程(第3版)环境搭建——使用MAC OSX10.10,能够成功运行 1.下载本书的头文件及示例源码原书地 ...
- DOM 属性操作
1 属性节点 2 attribute操作 3 value获取值操作 4 class的操作 5 指定CSS操作 1.属性节点 //获取文本节点的值 var divEle = document.getEl ...
- python ipython notebook或者 jupyter notebook 的安装
IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果.在浏览器的界面中使用单元(Cell)保存各种信息.Cell有多种类型,经常使用的有表示格式化文本的 ...
- python基础25 -----python高级用法
一.Event 1.为什么会有Event? 线程的一个关键特性就是每个线程的运行都是独立运行且状态不可预测.如果程序中的线程需要通过别的线程的状态来判断自己线程中的 某个程序是否需要执行,那么Even ...
- 分布式计算开源框架Hadoop入门实践(一)
在SIP项目设计的过程中,对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计,在我从前写的文章<Tiger Concurrent Practice --日志分析并行分解设计与实 ...
- 06 Spring框架 依赖注入(三)多配置文件
在Spring前几节的学习中我们都使用了一个配置文件,就像struts2中可以包含其他的配置文件,我们能不能使用多个配置文件呢(在工程比庞大,配置比较多的时候)? Spring多配置文件分为两种: 平 ...
- 基于R语言的数据分析和挖掘方法总结——中位数检验
3.1 单组样本符号秩检验(Wilcoxon signed-rank test) 3.1.1 方法简介 此处使用的统计分析方法为美国统计学家Frank Wilcoxon所提出的非参数方法,称为Wilc ...
- winter 2018 02 01 关于模运算的一道题
题目:给出一个正整数n,问是否存在x,满足条件2^x mod n=1,如果存在,求出x的最小值. 分析:1.若给出的n是1,则肯定不存在这样的x; 2.若给出的是偶数,2的次幂取余一个偶数得到 ...
- 深入理解JVM1
1 Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言.Java类文件格式.Java虚拟机和Java应用程 ...