java 内存操作流

操作内存流的时候(从读取出来,注意一定要把真正的数据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);

}

}

}

原文地址:https://www.cnblogs.com/fanweisheng/p/11136230.html

时间: 2024-07-28 16:11:35

java 内存操作流的相关文章

JAVA的IO操作:内存操作流

掌握内存操作流 输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteArrayOutputStream ByteArrayInputStream:将内容写入到内存中, ByteArrayOutputStream:将内存中数据输出 此时的操作应该以内存为操作点. 利用此类 完成一些功能. 常用方法 ByteArrayInputStream :是InputStream子类. public class ByteArrayInputS

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

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

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

IO数据流: 可以读写基本数据类型的数据 数据输入流:DataInputStream DataInputStream(InputStream in)   数据输出流:DataOutputStream  DataOutputStream(OutputStream out) 本来想自己写例子,后来看到博友写的全面..果断转载! java io系列15之 DataOutputStream(数据输出流)的认知.源码和示例 java io系列14之 DataInputStream(数据输入流)的认知.源码

Java基础系列10:内存操作流,管道流,合并流,压缩流以及回退流

前言:这篇文章将对几个"非主流"的IO流进行简单的介绍 一 内存操作流 内存操作流的主要作用是完成内存的输入和输出.比如说在某些情况下需要生成一些临时信息,而将这些临时信息保存在文件中不仅要进行文件的读写而且在功能完成之后还需要删除这个临时文件,因此比较麻烦,这时或许就需要用到内存操作流了. 需要用到的API是:ByteArrayInputStream和ByteArrayOutputStream,分别表示输入流和输出流,示例代码如下: package javase.io; import

JavaLearning:JAVA IO 之内存操作流

package org.fun.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteArrayDemo { public static void main(String[] args) { String str = "helloworld";// 定义字符串,全部由小写字母组成 ByteArrayOutputStream bos = null;//

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

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

IO-05内存操作流06管道流

JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能. 利用这两个类实现大小字母的转换: package lianxijihe; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; impo

详解 字符内存操作流

目录 字符内存操作流 CharArrayWrite类: CharArrayReader类: StringWriter类: StringReader类: (请观看本人博文--<详解 内存操作流>) @ 字符内存操作流 字符内存操作流 按照功能分 ,共分为 两种: 分类: 操作字符数组 CharArrayWrite CharArrayReader 操作字符串 StringWriter StringReader 那么,本人现在就对这两种字符内存操作流进行下讲解: 首先是 操作字符数粗的 CharAr

一、javaSE (二十二)登录注册IO版本案例、数据操作流、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流、Properties、NIO

1:登录注册Io版本案例(掌握) 要求,对着写一遍 cn.itcast.pojo User cn.itcast.dao UserDao cn.itcast.dao.impl UserDaoImp1(实现我不管) cn.itcast.game GuessNumber cn.itcast.test UserTest 2:数据操作流(操作基本类型数据的流)(理解) (1)可以操作基本类型的数据 (2)流对象名称 DataInputStream DataOutputStream 3:内存操作流(理解)