数组流

流的源和目的地除了可以是文件外,还可以是计算机内存。

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不需要关闭流

最新文章

  1. 两listview联动
  2. python快速生成注释文档的方法
  3. JavaScript检测对象的类属性
  4. OC整理1
  5. 认识基本的mfc控件
  6. NOI2018准备Day1
  7. 最流行的JavaScript库jQuery不再支持旧版IE
  8. JMeter学习(五)检查点
  9. 了解了这些才能开始发挥jQuery的威力(转)
  10. linux Xtrabackup安装及使用方法
  11. poj 1017 Packets 贪心
  12. UVA 11039-Building designing【贪心+绝对值排序】
  13. KS检验统计量的扩展应用(CMap)
  14. P2141 珠心算测验
  15. gitlab Docker容器创建命令以及从容器中备份gitlab仓库示例
  16. Docker:Service
  17. SGU 200. Cracking RSA (高斯消元求自由变元个数)
  18. ACE_Message_Queue和spawn实现(生产者/消费者)(V2.00)
  19. Inno Setup入门(四)——为程序创建桌面快捷方式
  20. 深度优先搜索之小z的房子与验证码识别

热门文章

  1. echarts, 小知识点随意记录,
  2. Vue.js之组件嵌套
  3. MySQL权限系统(一).The MySQL Access Privilege System 概述
  4. 前端基础 DOM & BOM
  5. 实验一中的OOP思想
  6. Python实现下载进度
  7. ABAP 多行消息分别显示弹窗
  8. (扫盲)C#中out和ref之间的区别
  9. 剑指offer 面试23题
  10. 剑指offer 面试50题