Java学习篇之IO流相关知识梳理
来源:互联网 发布:云计算paas平台 编辑:程序博客网 时间:2024/06/10 20:44
学IO流的时候感觉有点凌乱,各种类!!!这个可以理解,微微有点闹心的是这些类的名字老长了,而且有的还很相似,颇有种“猜猜我是谁”的赶脚,不过,一切凌乱都源自自己不注意总结,故今天放下了其他事情,认真总结了一番:
先上一张图:
上图是用XMind画的,第一次用,感觉不太习惯,有一些关联线并没有添加上去,不过,标签也能体现出一些联系,下面就根据自己目前的理解将这些知识穿起来。
关于IO的应用,就得提到我们每天接触电脑时候常用的两个基本操作了——读写。所以,学习IO流的最终目的就是为了读写,上图中,四大基类中Reader类和InputStream类是负责“读”操作的,剩下的两个负责“写”操作,当我第一次接触它们的时候,很是疑惑,为什么带“in”的类是负责“读操作”的,和日常感知貌似不一样,后意识到我们学习的是编程语言,考虑任何事情都应该清楚自己的立场,我们应该把自己当成程序本身,所以利用编程语言获取本地的数据的时候,就是in,而利用程序语言将一些数据写到本地的时候,相对于程序而言就是out,如此解释,希望读者可以理解。
解释完上述内容,就可以继续述说自己的理解了,读者也许会疑惑,为什么四个基类中要用两个类负责写,另外两个类负责读?答案很简单,“能力是有限的”,Reader类和Writer类只能对文本文件(注意:凡是打开后可以被人类看懂的都是文本文件,不要局限于txt文件)进行读写操作,而InputStream类和OutputStream类可以对任何文件进行读写操作,所以,它们两个属于“字节流”,而Reader类和Writer类属于“字符流”。
由于以上叙述的父类不能被实例化,所以我们只是学习它们的方法,而用它们的子类(FileReader,FileWriter,FileInputStream,FileOutputStream)进行具体的操作,好比儿子继承了老子的衣钵,老子去颐养天年了,哈哈……
如此一来,上图中就剩“转换流”和那个“高速载体”没有讲述了,其实我这个渣渣也不知道它们属于哪个类,放在上图中是为了根据自己的理解讲解它们之间的协作关系,如果读者有兴趣,就自己去查API文档吧!
我们刚刚接触JAVA的时候,都会学习JDK,JRE和JVM之间的关系,其中,JVM就是为了实现跨平台的,为什么它有这样的功能呢?因为它相当于是一个翻译官,在IO流学习这块,转化流其实也相当于是个翻译官,只不过实现的不是跨平台,而是“跨编码”(GBK码和UTF-8码),转化流可以实现字节和字符之间的转化,利用不同编码表之间的识别功能,即信息的等效显示。
好了,上边说的是“转换流”,现在说最后一个知识点——“缓冲流”,即上图中用红色星星标识出来的那些,与其说它是缓冲流,不如把它当成是“运载火箭”,为了达到高效的执行速度而产生的一种载体,那么这个“交通工具”都能承载什么样的乘客(参数)呢?顾名思义,就是字符高效载体承载字符流,字节高效载体承载字节流。
总结:
IO流的学习过程中,我们可以有一种这样的体会,就是这部分的一系列构造方法基本上遵循的都是“装载”思想,最开始学习File类,它的构造方法的参数都是一个路径,如此一来,路径就被封装成了一个File对象,这个File对象就成了一个参数,搭载着字符流或者字节流这趟列车,帮助它们完成相应的读写使命,之后,由于“语言不通”带来的困扰,转换流出来“拯救世界”,让字节流和字符流之间通过它可以互通,程序的世界中,高效是始终不变的追求,不然,用户会翻脸不认人,这时候,“缓冲流”这个运载火箭就出来圆场了。
综上所述,给我32个赞可好?好评返代码,具体见下篇~
- Java学习篇之IO流相关知识梳理
- Java学习篇之IO流相关知识梳理
- java IO流相关知识梳理
- Java IO流相关知识
- java-IO流相关知识
- Java IO流相关知识
- 电商之梳理redis相关知识---java缓存技术
- 电商之梳理monitor相关知识---java监控类
- Java IO相关知识
- java IO相关知识
- Phone相关知识学习总结与梳理
- Android基础知识梳理之View相关知识
- Java学习第21天:IO流之知识补充
- JAVA IO流简单梳理
- java提高篇(一) java知识汇总-------io流知识汇总(io学习流程)
- 多线程相关知识梳理
- JVM相关知识梳理
- 电商之梳理相关Zookeeper相关知识---HA
- XX银行数据中心建设方案
- 《团队执行力》分享记录
- git协作
- finished with non-zero exit value 42的解决办法
- CSS3 opacity 属性设置 div 元素的不透明级别:
- Java学习篇之IO流相关知识梳理
- 安卓实现图片缩放平移的基本步骤
- Tomcat的安装和简单配置
- 基于Java的Swing编写的记事本
- Composer -- PHP依赖管理的新时代
- PAT乙级(Basic Level)真题 1011.个位数统计
- UVa 340 - Master-Mind Hints
- Android源代码级调试环境配置
- [hihocoder1036]Trie图