java 内存操作流ByteArrayOutputStream

来源:互联网 发布:淘宝如何转企业店铺 编辑:程序博客网 时间:2024/06/06 17:52

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代表的值转化成小写字母。




0 0