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)相关推荐

  1. Java 字节数组流之图片转成字节数组

    Java 字节数组流之图片转成字节数组,相当于图片的复制 字符串可以直接读取到字节数组中用(getBytes) 问题:将一张图片读到字节数组里面(所有的东西都能够读到字节数组里面) 思路:先使用文件输 ...

  2. Java 字节数组流

    字节数组流,即向内存数组读/取数据,实现数据在流与流之间的传递. 与字节流别无二致. ByteInputStream: package SAMPLE.IO流; import java.io.*; /* ...

  3. 11Java的字节数组流及其使用

    IO字节数组流 字节数组流ByteArrayInputStream.ByteArrayOutputStream的区别: 源头换成电脑上的内存中的数据,字节数组,可以看成电脑上的内存,或者是网络上的内存 ...

  4. Java的知识点29—— 文件字符流、字节数组流

    文件字符流 FileReader  FileWriter 分段读取 文件字符输入流 package cn.dym; import java.io.File; import java.io.FileNo ...

  5. 操作数组的流 ByteArrayInputStream 和 ByteArrayOutputStream的简单介绍

    ByteArrayOutputStream 和 ByteArrayinputStream 为类用于操作字节数组. 一.ByteArrayInputStream 构造方法: ByteArrayInput ...

  6. IO知识点整理(序列化,管道流,数据流,字节数组流,与编码)

    一:序列化的问题 1.序列号的使用问题 关于在序列化中的序列号的使用问题,一般要是使用. 因为,每次要序列化的类产生都会产生一个一个新的序列号,如果将这个类的程序修改后,就会产生新的序列号,以前序列化 ...

  7. .dat文件写入byte类型数组_文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流...

    一.实操名称: 描述如下流的基本作用:文件字节流.文件字符流.缓冲字节流.缓冲字符流字节数组流.数据流.转换流.对象流二.描述1.文件字节流:包括:FileInputStream,FileOutput ...

  8. Java字节数组byte b[]与byte[] b

    Java中的字节数组 Java字节数组仅用于存储字节数据类型值.字节数组中元素的默认值为0. 通过以下Java字节数组示例,您可以学习 如何声明Java字节数组? 如何为Java字节数组分配值? 如何 ...

  9. java 如何操作字节数组_实例解析Java字节数组操作模式代码

    字节数组的关键是它为存储在这部分内存中的每个8位值提供索引(快速)和精确的原始访问,并且您可以操纵这些字节来控制每个位.缺点是计算机只将每个条目视为一个独立的8位数字--这可能是您的程序正在处理的,或 ...

最新文章

  1. iOS:融云即时通讯快速集成
  2. JDBC 基础知识总结
  3. rot90--矩阵旋转
  4. 在Tableau中实现表格下钻
  5. php _get返回,php如何无刷新获取get返回值
  6. DBVisualizer 添加数据库JDBC驱动
  7. django数据库错误相关问题
  8. Nginx 常见应用技术指南
  9. cmd 查看端口占用情况,及对应进程,杀进程
  10. rust : rustup切换stable、nightly
  11. 19 个接私活平台汇总,你有技术就有钱
  12. ATLAS中文设置steam中文启动代码
  13. [全解] 刷机, BL 锁, Bootloader, Recovery, Magisk, Root, ADB, 线刷, 卡刷, 9008, 绕过 FRP
  14. python中len函数_len()函数以及Python中的示例
  15. 小米5s 原生android,羡慕谷歌Pixel?其实就是国外版小米5s
  16. 2017年秋季学期软件工程第一次作业(曹洪茹)
  17. Elasticsearch学习(四) - 查询①
  18. 因为我梦见了热情的梦
  19. 如何评估机器学习模型?
  20. 按键精灵手机助手连接安卓模拟器

热门文章

  1. 软件测试工程师基础类面试题及参考答案
  2. pli测试50题题库_AI面试必备/深度学习100问1-50题答案解析
  3. tushare实战分析上证综指与美债收益率的关系
  4. java小游戏贪吃蛇
  5. 使用BookMarkHub插件实现在不同浏览器之间进行书签同步
  6. 有趣的巴什博弈(Bash Game)
  7. Windows 纤程/协程
  8. [从头读历史] 第265节 诗经 周南
  9. 锤子android 7,锤子正式加入安卓7.1.1阵容 一加3/3T尝鲜氢OS公测版
  10. 一个统计Word文档中行数的VBA例程