Java 字节数组流(ByteArrayInputStream 和 ByteArrayOutputStream)
1、FileInputStream、FileOutputStream、FileReader、FileWriter是存储在硬盘上的
硬盘上的资源java虚拟机是无权直接访问的,必须借助操作系统,java虚拟机借助完了之后要通知操作系统释放资源
2、把源头换成电脑上的一块内存(字节数组),既然是一块内存那么java就可以直接访问,因为是java虚拟机的一块内存。不用关闭(释放)
3、所有的东西都可以转成字节数组(字符串转成字节数组、任何一个数据(包括12、包括3.14、包括一个一个的对象都可以转成字节数组))
转成字节数组有什么好处?
字节数组就为二进制了,方便网络上进行传输
4、文件可以无限制的往里面加内容,但是内存速度快、量小,所以内存(字节数组)不允许不建议量特别的大
ByteArrayInputStream(byte[] buf) 参数为一个字节数组
创建一个 ByteArrayInputStream ,使其使用 buf作为其缓冲区数组
ByteArrayInputStream代码示例:
/** ByteArrayInputStream(byte[] buf) * 创建一个 ByteArrayInputStream ,使其使用 buf作为其缓冲区数组* * 四个步骤:字节数组输入流* 1、创建源:字节数组 不要太大* 2、选择流* 3、操作* 4、释放资源:可以不用处理*/public class IOTest07 {public static void main(String[] args) {// 1、创建源byte[] src = "talk is cheap show me the code".getBytes();// 2、选择流InputStream is = null;try {is = new ByteArrayInputStream(src);// 3、操作(分段读取)byte[] flush = new byte[5];//缓冲容器int len = -1;//接收长度while((len=is.read(flush))!=-1) {// 字节数组-->字符串(解码)String str = new String(flush,0,len);System.out.println(str);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {// 4、 释放资源try {if (null != is) {is.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
ByteArrayOutputStream代码示例:
/** ByteArrayOutputStream()不需要指定(源)目的地()参数为空,不用传源头,写完之后 主动去数组里面拿 toByteArray()* * 字节数组输出流 ByteArrayOutputStream* 1、创建源:内部维护(内部根据数据要多大给你多大)* (内部根据数据要多大给你多大)当数据写入缓冲区时,缓冲区会自动增长。 数据可以使用toByteArray()和toString() * 2、选择流:不关联源* 3、操作(写出内容)* 4、释放资源:可以不用* * 获取数据:toByteArray*/
public class IOTest08 {public static void main(String[] args) {// 1、创建源:内部维护(内部根据数据要多大给你多大)// ByteArrayOutputStream()不需要指定(源)目的地()参数为空byte[] dest = null;// 新增方法:父类没有的方法子类有// 能够使用多态的两种:父类有的方法、子类没有(为延用)、父类有的方法子类也有(方法重写)// 2、选择流 (因为要使用新增方法(父类没有的方法子类有),所以不能发生多态)ByteArrayOutputStream baos = null;try {baos = new ByteArrayOutputStream();// 3、操作(写出)String msg = "show me the code";byte[] datas = msg.getBytes();// 字符串-->字节数组(编码)baos.write(datas, 0, datas.length);baos.flush();// 获取数据dest = baos.toByteArray();System.out.println(dest.length+"-->"+new String(dest,0,baos.size()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (null != baos) {baos.close();}} catch (Exception e) {e.printStackTrace();}}}}
注意:
新增方法:父类没有的方法子类有
能够使用多态的两种:父类有的方法子类没有(为延用)、父类有的方法子类也有(方法重写,子类进行实现)
2、选择流 (因为要使用新增方法(父类没有的方法子类有),所以不能发生多态)
Java 字节数组流(ByteArrayInputStream 和 ByteArrayOutputStream)相关推荐
- Java 字节数组流之图片转成字节数组
Java 字节数组流之图片转成字节数组,相当于图片的复制 字符串可以直接读取到字节数组中用(getBytes) 问题:将一张图片读到字节数组里面(所有的东西都能够读到字节数组里面) 思路:先使用文件输 ...
- Java 字节数组流
字节数组流,即向内存数组读/取数据,实现数据在流与流之间的传递. 与字节流别无二致. ByteInputStream: package SAMPLE.IO流; import java.io.*; /* ...
- 11Java的字节数组流及其使用
IO字节数组流 字节数组流ByteArrayInputStream.ByteArrayOutputStream的区别: 源头换成电脑上的内存中的数据,字节数组,可以看成电脑上的内存,或者是网络上的内存 ...
- Java的知识点29—— 文件字符流、字节数组流
文件字符流 FileReader FileWriter 分段读取 文件字符输入流 package cn.dym; import java.io.File; import java.io.FileNo ...
- 操作数组的流 ByteArrayInputStream 和 ByteArrayOutputStream的简单介绍
ByteArrayOutputStream 和 ByteArrayinputStream 为类用于操作字节数组. 一.ByteArrayInputStream 构造方法: ByteArrayInput ...
- IO知识点整理(序列化,管道流,数据流,字节数组流,与编码)
一:序列化的问题 1.序列号的使用问题 关于在序列化中的序列号的使用问题,一般要是使用. 因为,每次要序列化的类产生都会产生一个一个新的序列号,如果将这个类的程序修改后,就会产生新的序列号,以前序列化 ...
- .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...
一.实操名称: 描述如下流的基本作用:文件字节流.文件字符流.缓冲字节流.缓冲字符流字节数组流.数据流.转换流.对象流二.描述1.文件字节流:包括:FileInputStream,FileOutput ...
- Java字节数组byte b[]与byte[] b
Java中的字节数组 Java字节数组仅用于存储字节数据类型值.字节数组中元素的默认值为0. 通过以下Java字节数组示例,您可以学习 如何声明Java字节数组? 如何为Java字节数组分配值? 如何 ...
- java 如何操作字节数组_实例解析Java字节数组操作模式代码
字节数组的关键是它为存储在这部分内存中的每个8位值提供索引(快速)和精确的原始访问,并且您可以操纵这些字节来控制每个位.缺点是计算机只将每个条目视为一个独立的8位数字--这可能是您的程序正在处理的,或 ...
最新文章
- iOS:融云即时通讯快速集成
- JDBC 基础知识总结
- rot90--矩阵旋转
- 在Tableau中实现表格下钻
- php _get返回,php如何无刷新获取get返回值
- DBVisualizer 添加数据库JDBC驱动
- django数据库错误相关问题
- Nginx 常见应用技术指南
- cmd 查看端口占用情况,及对应进程,杀进程
- rust : rustup切换stable、nightly
- 19 个接私活平台汇总,你有技术就有钱
- ATLAS中文设置steam中文启动代码
- [全解] 刷机, BL 锁, Bootloader, Recovery, Magisk, Root, ADB, 线刷, 卡刷, 9008, 绕过 FRP
- python中len函数_len()函数以及Python中的示例
- 小米5s 原生android,羡慕谷歌Pixel?其实就是国外版小米5s
- 2017年秋季学期软件工程第一次作业(曹洪茹)
- Elasticsearch学习(四) - 查询①
- 因为我梦见了热情的梦
- 如何评估机器学习模型?
- 按键精灵手机助手连接安卓模拟器