5 ByteArrayInputStream 与 ByteArrayOutputStream类

来源:互联网 发布:嫁给外国人 知乎 编辑:程序博客网 时间:2024/06/05 17:17

---------------------- android培训、java培训、期待与您交流! ----------------------


ByteArrayInputStream 与 ByteArrayOutputStream

ByteArrayInputStream 与 ByteArrayOutputStream,用于以IO流的方式来完成对字节数组内容的读写,来支持类似内存虚拟文件或内存映像文件的功能。

编程实例:

编写一个把输入流中所有英文字母变成大写字母然后将结果写入到一个输出流对象。用这个函数将一个字符串中的所有字母转换成大写字母。

TestByteArrayStream.java

import java.io.*;

public class TestByteArrayStream {

  public static void main(String[] args) {

  String str = "abcdefg";

  ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes());

  ByteArrayOutputStream baos = new ByteArrayOutputStream();

  transform(bais, baos);

  byte[] arr = baos.toByteArray();

  System.out.println(new String (arr));

 

  transform(System.in, System.out);

}

  public static void transform(InputStream is, OutputStream os) {

  try {

  int ch = 0;

while((ch = is.read()) != -1) {

int upperCh = Character.toUpperCase(ch);

os.write(upperCh);

}

catch (IOException e) {

  e.printStackTrace();

}

  }

}

重视IO程序的复用性

System.int连接到键盘,是InputStream类型的对象,System.out连接到显示器,是PrintStream类的实例对象。

不管各种底层物理设备使用什么方式实现数据终止点,InpuStreamread() 方法总是返回-1来表示输入流的结束。

Windows下按下Crtl + Z 键组合可以产生键盘输入流的结束标记,在Linux下,则是能过按下 Crtl + D 组合键产生键盘输入流的结束标记。

总结:

要编程从键盘上连续读取一大段数据时,应尽量将读取数据的过程放在函数中完成,使用-1来作为键盘输入的结束点。在该程序中编写的读取数据的函数时不应直接使用System.in 来读取数据,而用一个InputStream类型的形式参数来调用该函数,然后将System.in作为函数的一个实参进行使用,因此增强了函数的复用性。



---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima

原创粉丝点击