java 内存操作流ByteArrayOutputStream

java 内存操作流主要有两个类ByteArrayOutputStream和 ByteArrayInputStream。


/*
在内存中进行操作输入输出流,由此引发对多态的理解。
*/
import java.io.* ;
public class ByteArrayDemo01{
	public static void main(String args[]) throws Exception{
		String str="AFASDFASFSADFAS";
		ByteArrayInputStream bis = null;      //输入流
		ByteArrayOutputStream bos = null;     //输出流
		bis = new ByteArrayInputStream(str.getBytes());
		bos = new ByteArrayOutputStream();
		int temp=0;
		while((temp=bis.read())!=-1){
			bos.write(Character.toLowerCase(temp));
		}
		bis.close();
		bos.close();
		System.out.println(bos.toString());
		/*
		char c='a';
		int i=c;
		System.out.println(i);
		*/
	}
};
对多态的理解:

java.lang.Object
  java.io.InputStream
      java.io.ByteArrayInputStream
可以看出 ByteArrayInputStream是InputStraem的子类,同一个父类下不同子类产生不同的操作,就是多态。上述代码可以换成这样:父类声明,new的时候new你想要的子类。

/*
在内存中进行操作输入输出流,由此引发对多态的理解。
*/
import java.io.* ;
public class ByteArrayDemo02{
	public static void main(String args[]) throws Exception{
		String str="AFASDFASFSADFAS";
		<span style="color:#ff0000;">InputStream </span>bis = null;      //输入流
		<span style="color:#ff6666;">OutputStream</span> bos = null;     //输出流
		bis = new ByteArrayInputStream(str.getBytes());
		bos = new ByteArrayOutputStream();
		int temp=0;
		while((temp=bis.read())!=-1){
			bos.write(Character.toLowerCase(temp));
		}
		bis.close();
		bos.close();
		System.out.println(bos.toString());
		/*
		char c='a';
		int i=c;
		System.out.println(i);
		*/
	}
};

如下面另一个InputStream的子类的操作:

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
/*
问题:文件虽然读出来了,但是存在很多的空行,就是因为我们申请了1024的数组,但是
实际的数据量没有那么大。解决看下一个。
*/
public class InputStreamDemo01{
	public static void main(String[] args)throws Exception{
		//第一步通过File类找到一个文件,如果文件不存在,自动创建
		File f = new File("d:"+File.separator+"test.txt");
		//第二部通过子类实例化父类对象,IutputStream是FileIutputStream的父类
		<span style="color:#ff0000;">InputStream input = null;
		input = new FileInputStream(f);</span>
		//第三部进行读写操作
		byte b[] = new byte[1024];           //所有内容都读取到这个数组中
		input.read(b);
		//关闭输入输出流
		input.close();
		//把byte数组变成字符串输出
		String str = new String(b);
		System.out.println("内容:"+str);
	}
}
完成了同一父类不同子类的操作。

最后补充: 在java中有三个类负责对字符的操作:Character、String、StringBuffer。其中,Character类是对单个字符进行操作,String是对一个字符序列的操作,StringBuffer是对一串字符进行操作。Character.toLowerCase(temp);是为了把temp代表的值转化成小写字母。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值