java--内存流(四)

举报
brucexiaogui 发表于 2021/12/29 23:47:40 2021/12/29
【摘要】 java--内存流(四) 一、内存流--字节流   之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时得使用内存流完成内存的输入和输出操作。如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现; 直接操作磁盘的文件很耗性能,使用内存流可以提升性能;jdk里提供了内存流可实...

java--内存流(四)

一、内存流--字节流

 

  • 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时得使用内存流完成内存的输入和输出操作。
  • 如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现;
  1. 直接操作磁盘的文件很耗性能,使用内存流可以提升性能;jdk里提供了内存流可实现类似于内存虚拟文件的功能。
  2. ByteArrayInputStream:将内容写到内存中
  3. ByteArrayOutputStream:将内存中的数据写出

 

  • ByteArrayInputStream:构造方法:

 

  1. public ByteArrayInputStream(byte[] buf):全部内容
  2. public ByteArrayInputStream(byte[] buf,int offset,int length):指定范围的内容

 

  • ByteArrayOutputStream:

 

public ByteArrayOutputStream()

 

内存--字节流实例


      package io;
      import java.io.ByteArrayInputStream;
      import java.io.ByteArrayOutputStream;
      import java.io.IOException;
      /**
       * 内存流可以不用关闭
       *
       */
      public class ByteStreamDemo {
     	public static void main(String[] args) throws IOException {
     		String data  = "java,i love you!";
     		//保存到内存中去.//程序-->内存 
     		ByteArrayOutputStream bos = new ByteArrayOutputStream();
      		bos.write(data.getBytes());
     		//把我存到内存的数据取出来
     		//内存 --> 程序
     		//byte[] toByteArray() 创建一个新分配的 byte 数组。
     		byte[] bys = bos.toByteArray();//真正的数据
     		ByteArrayInputStream bis = new  ByteArrayInputStream(bys);
     		byte[] b= new byte[1024];
     		int len = 0;
     		while((len = bis.read(b)) != -1){
     			String str = new String(b,0,len);
      			System.out.println(str);
      		}
      	}
      }
  
 

 

二、内存流--字符流

 

 

  • CharArrayReader
  • CharArrayWriter

 

 

  1. 此类实现一个可用作 Writer 的字符缓冲区。缓冲区会随向流中写入数据而自动增长。可使用 toCharArray() 和 toString() 获取数据。 

内存流--字符流实例


       package io;
       import java.io.CharArrayReader;
       import java.io.CharArrayWriter;
       import java.io.IOException;
       /**
        * 内存流不用关闭
        */
       public class CharArrayDemo {
      	public static void main(String[] args) throws IOException {
      		String data = "成都,好地方";
      		//程序 -> 内存
      		CharArrayWriter cw = new  CharArrayWriter();
       		cw.write(data);//FileOutputStream
      		char[] cs = cw.toCharArray();//取出内存输出流的数据
       		System.out.println(cs.length);
      		//把内存的数据 ---> 程序
      		CharArrayReader cr = new CharArrayReader(cs);
      		char[] buff = new char[1024];
      		int len = 0;
      		while((len = cr.read(buff)) != -1){
       			System.out.println(new String(buff,0,len));
       		}
       	}
       }
   
  
 

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/80052945

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。