热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内存流——​ByteArrayOutputStream,ByteArrayInputStream,CharArrayReader,CharArrayWriter

1、什么是内存流​当输出流的目的,和输入流的源是内存时,这样的流称之为内存流。​ByteArrayOutputStream:内存流的输出流​ByteAr

1、 什么是内存流


​ 当输出流的目的,和输入流的源是内存时,这样的流称之为内存流。

​ ByteArrayOutputStream:内存流的输出流

​ ByteArrayInputStream:内存流的输入流,它是唯一一种能够直接从网络上获取二进制数据的流

​ CharArrayReader:内存流中的输入流

​ CharArrayWriter:内存流中的输出流

​ ByteArrayInputStream主要完成将内容从内存读入程序之中,而ByteArrayOutputStream的功能主要是将数据写入到内存中。


2、内存流构造方法


ByteArrayInputStream是输入流的一种实现,它有两个构造函数,每个构造函数都需要一个字节数组来作为其数据源:

ByteArrayInputStream(byte[] buf)

ByteArrayInputStream(byte[] buf,int offse , int length)

​ ByteArrayOutputStream是输出流的一种实现,它有两个构造函数:

ByteArrayOutputStream():内存中分配了一个字节数组。

BuyteArrayoutputStream(int):创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)


1.3 写数据到内存流和从内存流读数据


​ 如果程序在运行过程中要产生一些临时文件,可以采用虚拟文件方式实现(其实是一段内存),JDK中提供了ByteArrayInputStream和ByteArrayOutputStream两个类可实现类似于内存虚拟文件的功能。


通过内存流写数据: 

import java.io.ByteArrayOutputStream;
import java.io.IOException;public class Test {public static void writeByteArray(String msg) {ByteArrayOutputStream baos = null;try {baos = new ByteArrayOutputStream();baos.write(msg.getBytes());baos.flush();// 1.通过toString()得到缓冲区数据// System.out.println(baos.toString());// 2.通过toByteArray()方法得到一个byte数组byte[] b = baos.toByteArray();String str = new String(b);System.out.println("str:" + str);} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {String msg = "hello world";Test.writeByteArray(msg);}
}

通过内存流读取数据:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;public class Test {public static void readByteArray(String msg) {ByteArrayOutputStream baos = null;ByteArrayInputStream bais = null;try {baos = new ByteArrayOutputStream();baos.write(msg.getBytes());baos.flush();bais = new ByteArrayInputStream(baos.toByteArray());byte[] b = new byte[1024];int len = bais.read(b);System.out.println("len:" + len);String str = new String(b, 0, len);System.out.println("str:" + str);} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {String msg = "hello world";readByteArray(msg);}
}

 


推荐阅读
  • 软件工程—个人作业(5)
    题目要求:(1)输出某个英文文本文件中26字母出现的频率,由高到低排列,并显示字母出现的百分比, ... [详细]
  • importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io. ... [详细]
  • 什么是操作符重载?一看到重载,很容易就让人联想到成员函数重载,函数重载可以使名称相同的函数具有不同的实际功能,只要赋给这些同名函数不同的参数就可以了,操作符重载也是基于这一机制的。系统为我们提供了许多 ... [详细]
  • 简单数据结构模板
    一,STL1>STL中数据结构常见操作a.assign(b.begin(),b.begin()+3);b为向量,将b的0~2个元素构成的向量赋给aa.as ... [详细]
  • 1.背景java.util.concurrent.atomic这个包是非常实用,解决了我们以前自己写一个同步方法来实现类似于自增长字段的问题。在Java语言中,增量操作符(++)不是原子的, ... [详细]
  • Java的核心库提供了大量的现成的类供我们使用。本节我们介绍几个常用的工具类。Math顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态 ... [详细]
  • 题目描述输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)本题有多组输入,请使用whil ... [详细]
  • Java中的FileStoregetUsableSpace()方法,带示例 ... [详细]
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • C语言解题——指针解析(牛客网题目)
    指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而 ... [详细]
  • http:www.cnblogs.comComputerGarchive201202012334898.html一:C语言中的内存机制在C语言中,内存 ... [详细]
  • “在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。  树链,就是树上的路径。剖分, ... [详细]
  • python 对象锁_Python学习之进程和线程
    Python学习之进程和线程Python学习目录在Mac下使用Python3Python学习之数据类型Python学习之函数Python学习之高级特性Python学习之函数式编程P ... [详细]
  • 不懂性能优化,再强的计算机也白玩
    不懂性能优化,再强的计算机也白玩-Python的优秀有目共睹,不过说的性能,还真比不了Java、C、Go,有没有提升性能的技巧或方法呢?今天我们一起学习下提升Python性能的方式 ... [详细]
  • 最近自己做一个工具最后涉及到一个存储成bmp位图的形式,由于这部分并不是整个project的重点我就从网上找了例子改了改,但是目前的问题是有很多时候都是存储的bmp全黑,我也并不知道是怎么回事。 ... [详细]
author-avatar
IQBB_LongGang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有