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()

 

内存--字节流实例


  
  1. package io;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. /**
  6. * 内存流可以不用关闭
  7. *
  8. */
  9. public class ByteStreamDemo {
  10. public static void main(String[] args) throws IOException {
  11. String data = "java,i love you!";
  12. //保存到内存中去.//程序-->内存
  13. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  14. bos.write(data.getBytes());
  15. //把我存到内存的数据取出来
  16. //内存 --> 程序
  17. //byte[] toByteArray() 创建一个新分配的 byte 数组。
  18. byte[] bys = bos.toByteArray();//真正的数据
  19. ByteArrayInputStream bis = new ByteArrayInputStream(bys);
  20. byte[] b= new byte[1024];
  21. int len = 0;
  22. while((len = bis.read(b)) != -1){
  23. String str = new String(b,0,len);
  24. System.out.println(str);
  25. }
  26. }
  27. }

 

二、内存流--字符流

 

 

  • CharArrayReader
  • CharArrayWriter

 

 

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

内存流--字符流实例


   
  1. package io;
  2. import java.io.CharArrayReader;
  3. import java.io.CharArrayWriter;
  4. import java.io.IOException;
  5. /**
  6. * 内存流不用关闭
  7. */
  8. public class CharArrayDemo {
  9. public static void main(String[] args) throws IOException {
  10. String data = "成都,好地方";
  11. //程序 -> 内存
  12. CharArrayWriter cw = new CharArrayWriter();
  13. cw.write(data);//FileOutputStream
  14. char[] cs = cw.toCharArray();//取出内存输出流的数据
  15. System.out.println(cs.length);
  16. //把内存的数据 ---> 程序
  17. CharArrayReader cr = new CharArrayReader(cs);
  18. char[] buff = new char[1024];
  19. int len = 0;
  20. while((len = cr.read(buff)) != -1){
  21. System.out.println(new String(buff,0,len));
  22. }
  23. }
  24. }
 

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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