input read 将一个XXX读入(input)---从输入流中读取数据的下一个字节(code操作的)。
output write 将一个类型的数据写入此流(code操作的)---然后把XXX输出(output)到目的地
read(byte[] buf)
write(byte[] buf)
read和write中都有这种带参的情况,但是作用完全不同;
read中的buf是装参数的容器:将input中的字节放入到buf中;
write中的buf是传递参数的容器:我们要给output的数据已经提前被我们放到了output中。

最开始学习流 fileInput...  fileOutput
我认为流是相对于外存和内存来讲的;
当我们把外存中的物理文件读到内存中就是fileInput
当我们把内存中的文件写到外存中就是fileOutput

但是不到一个小时 我就否认我的这个不算正确的想法;
我觉得这个范围太大了还是很模糊;
应该是相对于程序来讲的;
如图示:



在大多数时候,input和output都于FileInputStream/Reader、FileOutputStream/Writer开始,构造中只需要一个路径,可以看出在大多数时候,在input中输入时自动的,在output中输出是自动的;而通过底层的FilInput、FileOutput进行包装后的BufferedInput、BufferedOutput、DataInput、DataOutput等等,我们可以看出:底层的流是容器,高层的流是对底层的流进行包装(装饰者模式),进行功能扩展。

某些特例使用output进行加密,压缩操作的时候,使用write入之后,通过ByteArrayOutputStream做为底层的容器,使用toByteArray方法获取到output中的值!

最后总结:
read读出
write写入
(不管是输入还是输出流,本质都是容器用于存放数据)
正确的理解了这个过程,也就理解了input和output是相对于程序来讲的。
内存和程序。
外存和程序。

回忆java输入输出流,走出误区的更多相关文章

  1. Java输入/输出流体系

    在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...

  2. 深入理解Java输入输出流

    Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概念呢?可以 ...

  3. Java基础学习总结(47)——JAVA输入输出流再回忆

    一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了 ...

  4. Java 输入输出流 转载

    转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...

  5. Java输入输出流(一)——常用的输入输出流

    1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...

  6. java输入输出流总结 转载

    一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是 ...

  7. Java输入输出流(转载)

    转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...

  8. java输入输出流(I/O)总结

    io流的 四个基本类 java.io包中包含了流式I/O所需要的所有类.在java.io包中有四个基本类:InputStream.OutputStream及Reader.Writer类,它们分别处理字 ...

  9. Java输入输出流(2)

    6. Java.IO流类库 1. io流的四个基本类 java.io包中包括了流式I/O所须要的全部类. 在java.io包中有四个基本类:InputStream.OutputStream及Reade ...

随机推荐

  1. 在HTML中使用JavaScript(浏览器对js的加载机制分析)

    前言: 向HTML页面中插入JavaScrip的主要方法,就是使用<script>标签.主要探讨<script>标签的在HTML页面的渲染机制.对应的业务场景:从js的加载机制 ...

  2. PO封装设计模式 -- Web页面端测试

    一.已登录页面 -->新建PO封装的包 -- 以下源码适用于python3以上的版本 代码优化新增 Image -->对操作步骤进行截图 二.basepage 包基础类的封装如下: fro ...

  3. Python在ubuntu16.04上环境搭建

    1.anaconda3安装 mkdir anaconda cd anaconda wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linu ...

  4. 高德纳/Donald Ervin Knuth

    丸了丸了这位就是我人生的第一位爱豆了owo 感觉他的经历,气质都是我期望的类型呀. 即使没有人家的智商和绝顶天赋,也不断向彼努力吧. 从小喜欢音乐,会多种乐器(管风琴) 其实长得人高马大,高中校篮球队 ...

  5. 🏆【Java技术专区】「并发编程专题」教你如何使用异步神器CompletableFuture

    前提概要 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值.这时候,大家可能会去尝试使用Callable中的 ...

  6. 浅析线程池 ThreadPoolExecutor 源码

    首先看下类的继承关系,不多介绍: public interface Executor {void execute(Runnable);} public interface ExecutorServic ...

  7. FastAPI实战:简易MockServe

    Mock 我个人理解就是为了伪造返回结果的东西,MockServe通常说的就是接口未开放完成但是现在需要调用,所以无论是通过转发还是直接访问这个url,其结果基本就是自己定义的 当然做仔细点就是 给个 ...

  8. QT从入门到入土(四)——多线程(QtConcurrent::run())

    引言 在前面对Qt多线程(QThread)做了详细的分析:QT从入门到入土(四)--多线程(QThread) - 唯有自己强大 - 博客园 (cnblogs.com) 但是最近在做项目时候,要将一个函 ...

  9. Java流程控制03——选择结构

    选择结构 if单语句结构 我们很多时候要去判断一个东西是否可行,然后我们才去执行,这样一个过程我们用if语句来表示 语法  if(布尔表达式){ //如果布尔表达式结果为true将执行的语句 } if ...

  10. 华为eNSP基础入门-配置SSH远程登录

    eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...