以前我们都是将内容写入到文件里面,从文件里面读取内容,都是对具体的文件进行操作,所用的是FileOutputStream和FileInputStream.
其实,我们还可以将内容写入到内存里面,从内存里面读取相应的内容, 以内存为中介,进行存储和读取。 但是,内存一断电就没有了,不能存储,但是速度快。 内存,用的是 ByteArray, 所以对应的流就是 ByteArrayOutputStream 和ByteArrayInputStream.
一 ByteArrayOutputStream
一.一 方法
一.一.一 构造方法
一.一.一.一 方法
一.一.一.二 演示
@Test public void conTest(){ //默认是32 ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(32); }
一.一.二 普通读写方法
一.二 演示内存输出流
一.二.一 输出到字节数组和字符串
@Test public void writer1Test() throws Exception{ ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(32); //内存 byte[] b="你好啊,我是两个蝴蝶飞".getBytes("utf-8"); //将内容写入到内存里面。 byteArrayOutputStream.write(b); //读出内容,封装成字节数组,可用于图片和视频 byte[] bytes= byteArrayOutputStream.toByteArray(); System.out.println("字节输出内容:"+new String(bytes,"UTF-8")); //关闭是没有效果的 byteArrayOutputStream.close(); //读出内容,封装成字符串 String content=byteArrayOutputStream.toString("UTF-8"); System.out.println("字符串输出内容:"+content); }
运行,控制台打印输出:
一.二.二 输出到文件输出流
Hello3.txt 目前的内容为:
@Test public void writer2Test() throws Exception{ ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(32); byte[] b="你好啊,我是两个蝴蝶飞".getBytes("utf-8"); //写入到内存里面 byteArrayOutputStream.write(b); //定义文件 File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello3.txt"); //这个文件存在 OutputStream outputStream=new FileOutputStream(file,true); //从内存里面读取内容,放置到输出流 byteArrayOutputStream.writeTo(outputStream); outputStream.close(); byteArrayOutputStream.close(); }
运行程序,查看 Hello3.txt 的内容
二. ByteArrayInputStream
二.一 方法
二.一.一 构造方法
二.一.一.一 方法
二.一.一.二 演示
@Test public void conTest() throws Exception{ byte[] bytes="两个蝴蝶飞".getBytes("UTF-8"); ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(bytes); //读入一部分 ByteArrayInputStream byteArrayInputStream1=new ByteArrayInputStream(bytes,0,bytes.length); }
二.一.二 读取和关闭方法
二.二 演示内存输入流 ByteArrayInputStream
二.二.一 将字符串读取到内存
@Test public void readTest() throws Exception{ //定义输入内存的数据源 byte[] bytes="你好啊,我是两个蝴蝶飞".getBytes("UTF-8"); //写入到内存里面了。 ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(bytes); //写进来了,接下来,该读出来了。 //读出来 byte[] b=new byte[1024]; int len=-1; while((len=byteArrayInputStream.read(b))!=-1){ System.out.println("读出数据:"+new String(b,0,len)); } //关闭 byteArrayInputStream.close(); }
运行程序,控制台打印输出:
二.二.二 将输入流中的内容读取到内存里面
@Test public void read2Test() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello3.txt"); InputStream inputStream=new FileInputStream(file); byte[] inputB=new byte[1024]; int len=-1; ByteArrayInputStream byteArrayInputStream=null; while((len=inputStream.read(inputB))!=-1){ //写入到内存里面了,一次读取内容放置到 innputB 字节数组里面了。 byteArrayInputStream=new ByteArrayInputStream(inputB,0,len); //写进来了,接下来,该读出来了。 byte[] b=new byte[1024]; int lenTemp=-1; while((lenTemp=byteArrayInputStream.read(b))!=-1){ System.out.println("读出数据:"+new String(b,0,len)); } } //关闭 byteArrayInputStream.close(); inputStream.close(); }
运行程序,控制台打印输出:
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!