回忆java输入输出流,走出误区
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输入输出流,走出误区的更多相关文章
- Java输入/输出流体系
在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...
- 深入理解Java输入输出流
Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概念呢?可以 ...
- Java基础学习总结(47)——JAVA输入输出流再回忆
一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了 ...
- Java 输入输出流 转载
转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...
- Java输入输出流(一)——常用的输入输出流
1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...
- java输入输出流总结 转载
一.基本概念 1.1 什么是IO? IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是 ...
- Java输入输出流(转载)
转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...
- java输入输出流(I/O)总结
io流的 四个基本类 java.io包中包含了流式I/O所需要的所有类.在java.io包中有四个基本类:InputStream.OutputStream及Reader.Writer类,它们分别处理字 ...
- Java输入输出流(2)
6. Java.IO流类库 1. io流的四个基本类 java.io包中包括了流式I/O所须要的全部类. 在java.io包中有四个基本类:InputStream.OutputStream及Reade ...
随机推荐
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, no achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库. 首先克隆有两种方法,一种是Backup-Based,一种是Active方式.官网文档链接https://docs.oracle ...
- python开发包之pyecharts
一.python包国内源网址有: 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/ ...
- HashSet 和 HashMap 的比较
HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合.collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Qu ...
- 总结开发中基于DevExpress的Winform界面效果
DevExpress是一家全球知名的控件开发公司, DevExpress 也特指此公司出品的控件集合或某系列控件或其中某控件.我们应用最为广泛的是基于Winform的DevExpress控件组,本篇随 ...
- 数据库建模、面向对象建模>从零开始学java系列
目录 数据库建模 前置知识 使用PowerDesigner数据库建模设计 一对多CDM概念数据模型设计 多对多的PDM物理数据模型设计(针对mysql) PowerDesigner将不同的模型进行转换 ...
- 使用Magicodes.IE快速导出Excel
前言 总是有很多朋友咨询Magicodes.IE如何基于ASP.NET Core导出Excel,出于从框架的体验和易用性的角度,决定对Excel的导出进行独立封装,以便于大家更易于使用,开箱即用. 注 ...
- PDL语言/ 盒图N-S/ PAD图
PDL语言 伪码伪代码 基本语法 算法用Begin开始,以End结束(如果只表示中间部分的算法可以不要) 每一条指令,占一行.指令的结束不用任何符号 注释 用"//"表示 用Pri ...
- Special Forms and Syntax Sugars in Clojure
(...): function literals, p40, 64; '(...): suppress evaluation, p24; _(...): comments, p18; ".. ...
- GO Time 类型方法处理集合
1.判断2个时间是否超时 package main import ( "fmt" "time" ) func main() { //获取1秒后时间 var No ...
- MySQL-16-主从复制进阶
延时从库 介绍 延时从库: 是我们人为配置的一种特殊从库,人为配置从库和主库延时N小时 为什么要有延时从库 数据库故障 物理损坏,普通的主从复制非常擅长解决物理损坏 逻辑损坏,普通主从复制没办法解决逻 ...