何为流?物质在库与库之间的转移运行称为流,也就是说它是一个抽象的概念,既看不到也摸不着,更感受不到。那么应该如何理解这么一个抽象概念呢?就是把它形象化。

暂且举一个小例子,蚂蚁搬家的故事,从一个洞把食物搬到另外一个洞,很多蚂蚁会一起工作,有来有回连续不断,这样在两个洞中间就可以形成搬运食物的“流”。

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流形象化相关推荐

  1. 【Java笔记】File类与IO流(另添加NIO2使用)

    文章目录 本章专题与脉络 java.io.File类的使用 概述 构造器 常用方法 获取文件和目录基本信息 列出目录的下一级 File类的重命名功能 判断功能的方法 创建.删除功能 NIO2的使用 P ...

  2. Java面试知识点:File、IO流

    问题:Java面试知识点:File.IO流 答案: 1.File listFiles方法注意事项: • 当调用者不存在时,返回null • 当调用者是一个文件时,返回null • 当调用者是一个空文件 ...

  3. Java中的File类和IO流

    Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...

  4. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  5. 第一阶段>>>Java基础进阶 OOP/Reflect/注解/IO流/API核心

    目录 >>>java基础01-结构以及类型 >>>java基础02-初识数组 >>>java基础03-面向对象OOP >>>ja ...

  6. java文档表白_java基础io流——File的告白(重温经典)

    File类概述和构造方法 File类的概述 文件和目录路径名的抽象表示形式 构造方法 public File(String pathname) public File(String parent,St ...

  7. Java 学习(20)--异常 /  IO 流

    异常(Exception) (1)程序出现的不正常的情况. (2)异常的体系 Throwable(接口,将异常类对象交给 JVM  来处理) |--Error 严重问题,我们不处理.(jvm 错误,程 ...

  8. 2018.4.13 用java配置/生成Xml文件 结合IO流知识点

    自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7;import ...

  9. Java必须了解的“递归”与“IO流”!!!

    >>>First: 递归! 1. 定义: 在函数自身内部,调用函数本身的方式,称为递归. 2. 注意: 递归包括递进去.归出来两步. 首先,依次执行[函数调自身语句]上半部分的代码, ...

最新文章

  1. 【虚拟机】关于VMware 提示“无法获得VMCI驱动程序的版本:句柄无效”的解决方案...
  2. Docker入门与七牛kirk工具
  3. AAAI 2022 | 北航提出基于特征纯化的视线估计算法,让机器更好地“看见”
  4. Parsing Netflow using Kibana via Logstash to ElasticSearch
  5. BDKRHash详解
  6. 【BZOJ1607】轻拍牛头,筛一筛
  7. centos mysql 实战 第一节课 安全加固 mysql安装
  8. centos7 docker端口_使用Docker部署Python应用
  9. js实现视频时间段拖拽编辑
  10. RapidMiner遇到的问题
  11. 天津工业大学计算机保研,天津工业大学学生保研心得
  12. 面试时如何回答离开上家公司的原因?
  13. 支付宝app支付对接1
  14. 12个VSCode插件工具
  15. 尼古拉·特斯拉,到底有多神?
  16. 2023年Java学习路线图(适合自学详细版)
  17. 发送验证码-阿里云短信服务
  18. 麦香牛肉(dp 、数论)
  19. 超融合基础架构超融合一体机
  20. 千亿资产路劲掉队 单伟豹无心恋战地产圈?

热门文章

  1. MQTT 串口 TCP 互转工具
  2. python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化
  3. 每日新闻丨​滴滴发布AI技术与解决方案开放平台;中关村发布超300亿创新母基金...
  4. MFC CFile 读写文件
  5. CUDA编程:矩阵乘运算从CPU到GPU
  6. html文字段落加边框线,html给文字加边线框的代码
  7. js关闭谷歌浏览器的当前页面
  8. 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接
  9. VVC/VTM:帧间预测——Combined inter and intra prediction (CIIP)
  10. python的实验报告大一心理_python的期末实验报告