操作内存流的时候(从读取出来,注意一定要把真正的数据toByteArray或者toCharArray将数据读出来)

之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时要使用内存流完成内存的输入和输出操作。

如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现;

直接操作磁盘的文件很耗性能,使用内存流可以提升性能;jdk里提供了内存流可实现类似于内存虚拟文件的功能。

ByteArrayInputStream:将内容写到内存中     CharArrayReader

ByteArrayOutputStream:将内存中的数据写出      CharArrayWriter

ByteArrayInputStream:构造方法:

public ByteArrayInputStream(byte[] buf):全部内容

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

ByteArrayOutputStream:

public ByteArrayOutputStream()

我的总结:内存流操作:先把数据写到内存中去,然后再从内存中读取出来!提升了性能!

例子

//此处用的是内存字节流(写入加输出)

package june6D;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

public class ByteArrayDemo7 {

public static void main(String[] args) throws IOException {

String s = "java is a good language";

ByteArrayOutputStream bos = new ByteArrayOutputStream();//输出流

bos.write(s.getBytes());

// 已经把信息写到了内存中

byte[] bys = bos.toByteArray();// 得到真正的数据

ByteArrayInputStream bis = new ByteArrayInputStream(bys);//输入流,需要源。

byte[] b = new byte[1024];

int len;

while ((len = bis.read(b)) != -1) {

String data = new String(b, 0, len);

System.out.println(data);

}

}

}

package june6D;

import java.io.CharArrayReader;

import java.io.CharArrayWriter;

 

public class CharArrayDemo8 {

public static void main(String[] args) throws Exception {

// 用内存字符流先把数据保存到内存中,然后从内存中取出数据

String s = "河南城建学院";

CharArrayWriter cw = new CharArrayWriter();

cw.write(s);// 数据写到了内存中

char[] ch = cw.toCharArray();

CharArrayReader cr = new CharArrayReader(ch);

char[] b = new char[1024];

int len;

while ((len = cr.read(b)) != -1) {

String data = new String(b, 0, len);

System.out.println(data);

}

}

}

java 内存操作流的更多相关文章

  1. java 21-11 数据输入、输出流和内存操作流

    IO数据流: 可以读写基本数据类型的数据 数据输入流:DataInputStream DataInputStream(InputStream in)   数据输出流:DataOutputStream ...

  2. java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

    直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteA ...

  3. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  4. Java基础知识强化之IO流笔记58:内存操作流

    1. 内存操作流: 用来操作处理临时存储的信息的. (1)操作字节数组: ByteArrayInputStream ByteArrayOutputStream 代码示例: package cn.itc ...

  5. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  6. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  7. JAVA的IO操作:内存操作流

    掌握内存操作流 输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteArrayOutputStream ByteArrayInpu ...

  8. JavaIO——内存操作流、打印流

    我们之前所做的都是对文件进行IO处理,实则我们也可以对内存进行IO处理.我们将发生在内存中的IO处理称为内存流. 内存操作流也可分为两类:字节内存流和字符内存流. (1)ByteArrayInputS ...

  9. Java并发编程--7.Java内存操作总结

    主内存和工作内存 工作规则 Java内存模型, 定义变量的访问规则, 即将共享变量存储到内存和取出内存的底层细节  所有的变量都存储在主内存中,每条线程有自己的工作内存,工作内存中用到的变量, 是从主 ...

随机推荐

  1. SQLServer —— EXISTS子查询

    一.删除数据库 use master go if exists (select * from sysdatabases where name = 'Demo') drop database Demo ...

  2. PyCharm2019 永久激活

    <!-- 2019激活码 2019-06-21新更新 --> D00F1BDTGF-eyJsaWNlbnNlSWQiOiJEMDBGMUJEVEdGIiwibGljZW5zZWVOYW1l ...

  3. 集合--List&&ArrayList-LinkedList

    1.8新特性  List接口中的replaceAll()方法,替换指定的元素,函数式接口编程 List  元素是有序的并且可以重复 四种add();方法 ArrayList(用于查询操作),底层是数组 ...

  4. SAS信用评分之番外篇异常值的识别

    SAS信用评分之番外篇异常值的识别 今天想分享给大家的是我早期建模的时候一个识别异常值的办法,也许你在"信用风险评分卡研究"看过,但是代码只能识别一个变量,我将这个代码作了改良,但 ...

  5. python 并发之线程

    一.什么是线程 #指的是一条流水线的工作过程,关键的一句话:一个进程内最少自带一个线程,其实进程根本不能执行,进程不是执行单位,是资源的单位,分配资源的单位 #线程才是执行单位 #进程:做手机屏幕的工 ...

  6. Hibernate 标签: hibernate数据库 2017-01-15 22:03 462人阅读 评论(24)

    什么是hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernat ...

  7. TIJ——Chapter Three:Operators

    Operators 本章节比较简单,所以简单的做一些笔记: 几个要点: 1.When the compiler sees a String followed by a "+" fo ...

  8. Hibernate错误——No row with the given identifier exists

    错误 是用的是Hibernate自动建立的数据表,在进行数据库操作时,出现错误No row with the given identifier exists 解决 关系数据库一致性遭到了破坏,找到相关 ...

  9. Java面向对象----Java面向对象(OOP)概念

    理解面向对象 关键:让每一个对象负责执行一组相关任务 面向过程:算法第一,数据第二 面向对象:数据第一,算法第一 特点: 万物皆对象 程序是一组对象彼此之间在发送消息 每个对象都有自己的内存占用,可以 ...

  10. Android 错误:IllegalStateException: Can not perform this action after onSaveInstanceState

    今天做Fragment切换.状态保存功能的时候,出现了这个错误: E/AndroidRuntime(12747): Caused by: java.lang.IllegalStateException ...