您的位置:首页 > 编程语言 > PHP开发

ByteArrayInputStream与ByteArrayOutputStream类

2011-04-25 15:33 351 查看
ByteArrayInputStream与ByteArrayOutputStream类

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

ByteArrayInputStream的两个构造函数:
ByteArrayInputStream(byte[] buf) //以字节数组做为数据源
ByteArrayInputStream(byte[] buf,int offset,int length) //从字节数组中的offset位置开始的长度为length的字节做为数据源

ByteArrayOutputStream的两个构造函数: //下面两种方法创建的缓冲区在数据过多时,会自动增长
ByteArrayOutputStream() //创建一个有32个字节的缓冲区
ByteArrayOutputStream(int) //创建指定大小(int)的缓冲区

我们需要在内存中使用虚拟内存内容时,就可以使用ByteArrayInputStream和ByteArrayOutputStream来进行操作

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

//ByteArrayTest.java //启动类

import java.io.*;

public class ByteArrayTest{
pubblic static void main(String[] args){
String tmp = "abcdefghijklmnopqrst";
byte[] src = tmp.getBytes();
ByteArrayInputStream input = new ByteArrayInputStream(src);
ByteArrayOutputStream output = new ByteArrayOutputStream();
tranform(input,output);
byte[] result = output.toByteArray(); //返回一个字节数组
System.out.println(new String(result)); //把字节数组中的所有数据转换成字符串
}

//transform函数的作用是用于将输入流当中的数据读取出来,然后将它进行转换(使用两个抽象基类InputStream和OutputStream做为参数可以达到通用性,方便调用)
publci static void transform(InputStream in, OutputStream out){
int ch = 0;
try{
while((ch = in.read()) != -1){ //判断读取是否结果
int upperCh = /*(int)*/ Character.toUpperCase((char)ch); //字符包装类Character有一个方法toUpperCase可以将字符变为大写,这时用到强转换,将int型数据转换为字符型(char类型数据可以自动转换为int类型,但int类型数据需要强转换成char类型)
out.write(upperCh);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}

StringReader和StringWriter类来以字符IO流的方式处理字符串,这两个类分别对应ByteArrayInputStream和ByteArrayOutputStream
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: