对于IO流的个人理解
Samuel
2018-04-21
在这之前,我给你们构造这样一个生活用水的场景:
人们日常生活需要生活用水,那么,水从哪里来呢?
大家都学过初中的物理常识,水在地表,通过蒸发,变成水蒸气去到空中,在空中遇冷变成雨,掉落到地表,如此循环......而我们的自来水就是从其中一个阶段抽取出来,作为生活用水。简单的说就是,我们的生活用水需要一个很大的水工厂,水工厂通过各种大小水管将生活用水运输到我们的社区,我们开一下水龙头就可以用瓢子装水用了。想起来我以前看过的港片,如果刚好你的社区生活用水缺乏,你只能用盘,桶或者其他器皿装水了,然后抬回家去。
我要说什么呢?这跟IO流有什么关系呢?
有,我要说的就是IO流。现在我们来想像一下:
如果我们把水当做文件,把水工厂当做file类,将运输用的大小水管当做inputstream,outputstream,reader,writer,再把瓢子,盘,水桶等容器当做数组,char等。file类是可以放很多很多的水的大仓库,通过inputstream,outputstream,reader,writer这四个节点流(=水管),将水运输到社区,最后,用不同容器(=数组,char)将水装出来用。
这样是不是很好理解地IO流体系的概念了?
如果还有疑问,我就再说几句,你问我为什么要用这个例子作比喻?因为这跟我们的文件处理很相似,在生活中,如果你要用水,会不会去遥远的自来水工厂取水?好吧,你说你家附近就有一家自来水工厂,不远。但是你确定你能直接进去取水用?不嫌麻烦?就算你不想麻烦,但是人家自来水供应商会给你直接接触整个工厂的自来水吗?答案是不会,因为人家也是有严格地按照国家标准执行的。万一你靠近自来水工厂的自来水,投毒进去谁负责任啊。另外一个,为了管理,为了人们的用水方便,只能是将水通过一个大水管到各大社区,然后社区各家各户接一根小的水管到家。
同样的,file类也是一样的,创建了一个file类的对象后,你不可能直接对file的对象进行操作。只能通过inputstream,outputstream,reader,writer这四个水管将文件包装运输,人们用char或者数组等容器从水管中读取数据。
好了,关于IO流的理解就说到这里,若有不对之处,欢迎指正。本文仅供个人学习用,欢迎转载。
对于IO流的个人理解的更多相关文章
- java基础之IO流及递归理解
一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...
- IO流2
一.IO流简介及分类 1.IO流简介 IO流: 简单理解数据从一个地方流向另外一个地方 2.IO流分类 按照数据流动的方向 分为 输入流和输出流 按照数据流动的单位分为 字节流和字符流 二.四大 ...
- 【重学Java】IO流
IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
- io流中的装饰模式对理解io流的重要性
为了说明 io流中的装饰者模式对理解io流的重要性,我想先简要介绍以下io的装饰模式. 装饰(decorator)你也可以翻译成修饰.比如:一个会精通化学数学的物理学家.在这个"物理学家&q ...
- 理解Java之IO流
流是一种抽象概念,它代表了数据的无结构化传递.用来进行输入输出操作的流就称为IO流. 一.IO流结构 1.流的分类方式 按流向分: 从文件/网络/内存等(数据源)到程序是输入流:从程序到文件/网络/内 ...
- IO流理解方式小结
从业以来一直对IO不甚了解,每次看到都头疼不已,最近有时间小小的总结一下,下面以FileIO流为]; //文件输入流 FileInputStream in = new FileInputStream( ...
- 面试官:谈谈你对IO流和NIO的理解
一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套N ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
随机推荐
- C语言第二周作业----分支结构
一.PTA实验作业 题目1.7-1计算分段函数 本题目要求计算下列分段函数f(x)的值: 注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂. 1.实验代码 int ma ...
- Java作业-多线程
未完成,占位以后补 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 书面作业 本次PTA作业题集多线程 源代码阅读:多线程程序BounceThread 1.1 Ball ...
- electron-vue工程创建
没有vue创建经验请移步至 vue下载与安装 使用vue创建electron-vue工程 vue init simulatedgreg/electron-vue my-project 安装elemen ...
- python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---常用第三方库 ...
- Autowired注解
package com.how2java.pojo; import org.springframework.beans.factory.annotation.Autowired; public cla ...
- XFTP连接主机文件名显示中文乱码且不能下载的解决方法
Xftp连接主机文件名显示中文乱码且不能下载的本地解决方法 原因:Xftp编码格式问题 解决方法:把Xftp的编码格式增加UTF-8 具体步骤:打开Xftp,文件-属性,在打开的属性界面中打开&quo ...
- 搭建vue项目环境
前言 在开发本项目之前,我对vue,react,angular等框架了解,仅限于知道它们是什么框架,他们的核心是什么,但是并没有实际使用过(angular 1.0版本用过,因为太难用,所以对这类框架都 ...
- zookeeper入门系列:paxos协议
上一章讨论了一种强一致性的情况,即需要分布式事务来解决,本章我们来讨论一种最终一致的算法,paxos算法. paxos算法是由大牛lamport发明的,关于paxos算法有很多趣事.比如lamport ...
- Unity使用脚本进行批量动态加载贴图
先描述一下我正在做的这个项目,是跑酷类音游. 那么跑酷类音游在绘制跑道上的时候,就要考虑不同的砖块显示问题.假设我有了一个节奏列表,那么我们怎么将不同的贴图贴到不同的砖块上去呢? 我花了好几个小时才搞 ...
- Linq 延迟加载
IList<Student> ssList = new List<Student>() { , StudentName = "John", } , , St ...