【Java笔记】——将晦涩难懂的IO流形象化
何为流?物质在库与库之间的转移运行称为流,也就是说它是一个抽象的概念,既看不到也摸不着,更感受不到。那么应该如何理解这么一个抽象概念呢?就是把它形象化。
暂且举一个小例子,蚂蚁搬家的故事,从一个洞把食物搬到另外一个洞,很多蚂蚁会一起工作,有来有回连续不断,这样在两个洞中间就可以形成搬运食物的“流”。
Java语言的输入和输出功能是十分强大的,对于数据的输入输出操作就是以“流”的方式进行的。这里的数据也就可以认为是蚂蚁的“食物”,而数据从哪里输出,又输出到哪里,就可以认为是蚂蚁的两个洞。J2SDK提供了很多的“流”类,用来获取不同种类的数据,这些类都定义在java.io包中。
流类的分类
1、按流的方向不同分:输入流和输出流
2、按处理数据的单位不同分:字节流(8位)和字符流(16位)
3、按照功能不同分:节点流和处理流
四种基本流
J2SDK提供的所有流类都分别继承四种抽象流类型:
1、InputStream和Reader
继承于InputStream的流都是用于向程序中输入数据,且数据的单位为字节。
2、OutputStream和Writer
继承于OutputStream的流都是用于从程序中输出数据,且数据的单位为字节。
节点流和处理流
1、节点流为可以从一个特定的数据源读写数据。可以理解为给一个桶插上一根管子,就可以从管子另一头取水。
2、处理流是连接在已存在的流之上,通过对数据的处理为程序提供更为强大的读写功能。也就是说在这个管子上再套一层管子,从而可以取不同形态的水,比如带冰的。
疑惑点
在这里很容混淆一个概念,就是说输入和输出是相对谁而言的?为什么InputStream时后面跟的Reader,而OutputStream时后面跟的是Writer?
其实输入和输出都是相对于程序而言的,比如输入流,它是向程序中输入数据,为什么用Reader,那是因为要把流里面的数据读入程序中;而输出流正好相反,它是从程序中输出数据,用Writer是因为要把数据写入流中。
总结
面向对象中有很多抽象的概念,对于这种没有实物对比的概念,必须要把它形象化才能更容易理解和掌握。这时就要把知识融入生活,找跟生活类似的东西去比对,从而跟生活常识构成知识网,这也很好的体现了代码如人生的道理。
【Java笔记】——将晦涩难懂的IO流形象化相关推荐
- 【Java笔记】File类与IO流(另添加NIO2使用)
文章目录 本章专题与脉络 java.io.File类的使用 概述 构造器 常用方法 获取文件和目录基本信息 列出目录的下一级 File类的重命名功能 判断功能的方法 创建.删除功能 NIO2的使用 P ...
- Java面试知识点:File、IO流
问题:Java面试知识点:File.IO流 答案: 1.File listFiles方法注意事项: • 当调用者不存在时,返回null • 当调用者是一个文件时,返回null • 当调用者是一个空文件 ...
- Java中的File类和IO流
Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...
- 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流
1.File类概述 File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作. 前面说到的"流",它只能操作数据,想 ...
- 第一阶段>>>Java基础进阶 OOP/Reflect/注解/IO流/API核心
目录 >>>java基础01-结构以及类型 >>>java基础02-初识数组 >>>java基础03-面向对象OOP >>>ja ...
- java文档表白_java基础io流——File的告白(重温经典)
File类概述和构造方法 File类的概述 文件和目录路径名的抽象表示形式 构造方法 public File(String pathname) public File(String parent,St ...
- Java 学习(20)--异常 / IO 流
异常(Exception) (1)程序出现的不正常的情况. (2)异常的体系 Throwable(接口,将异常类对象交给 JVM 来处理) |--Error 严重问题,我们不处理.(jvm 错误,程 ...
- 2018.4.13 用java配置/生成Xml文件 结合IO流知识点
自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7;import ...
- Java必须了解的“递归”与“IO流”!!!
>>>First: 递归! 1. 定义: 在函数自身内部,调用函数本身的方式,称为递归. 2. 注意: 递归包括递进去.归出来两步. 首先,依次执行[函数调自身语句]上半部分的代码, ...
最新文章
- 【虚拟机】关于VMware 提示“无法获得VMCI驱动程序的版本:句柄无效”的解决方案...
- Docker入门与七牛kirk工具
- AAAI 2022 | 北航提出基于特征纯化的视线估计算法,让机器更好地“看见”
- Parsing Netflow using Kibana via Logstash to ElasticSearch
- BDKRHash详解
- 【BZOJ1607】轻拍牛头,筛一筛
- centos mysql 实战 第一节课 安全加固 mysql安装
- centos7 docker端口_使用Docker部署Python应用
- js实现视频时间段拖拽编辑
- RapidMiner遇到的问题
- 天津工业大学计算机保研,天津工业大学学生保研心得
- 面试时如何回答离开上家公司的原因?
- 支付宝app支付对接1
- 12个VSCode插件工具
- 尼古拉·特斯拉,到底有多神?
- 2023年Java学习路线图(适合自学详细版)
- 发送验证码-阿里云短信服务
- 麦香牛肉(dp 、数论)
- 超融合基础架构超融合一体机
- 千亿资产路劲掉队 单伟豹无心恋战地产圈?
热门文章
- MQTT 串口 TCP 互转工具
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
- 每日新闻丨​滴滴发布AI技术与解决方案开放平台;中关村发布超300亿创新母基金...
- MFC CFile 读写文件
- CUDA编程:矩阵乘运算从CPU到GPU
- html文字段落加边框线,html给文字加边线框的代码
- js关闭谷歌浏览器的当前页面
- 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接
- VVC/VTM:帧间预测——Combined inter and intra prediction (CIIP)
- python的实验报告大一心理_python的期末实验报告