001.流 上卷 概念

1.JAVA流式输入/输出原理

站在程序的角度思考问题

流是用来读写数据的,Java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的。怎么把文件里面的数据读出来呢?你可以把文件想象成一个小桶,文件就是一个桶,文件里面的数据就相当于是这个桶里面的水,那么我们怎么从这个桶里面取水呢,也就是怎么从这个文件读取数据呢。

2.输入输出流分类

不同流的分类,仔细看看图

java.io.* 包里面定义了所有的流,所以一说流指的就是IO包里面的

什么叫输入流?什么叫输出流?用一根管道一端插进文件里程序里面,然后开始读数据,那么这是输入还是输出呢?如果站在文件的角度上,这叫输出,如果站在程序的角度上,这叫输入。

记住,以后说输入流和输出流都是站在程序的角度上来说。

3.节点流和处理流

处理流会提高效率

你要是对原始的流不满意,你可以在这根管道外面再套其它的管道,套在其它管道之上的流叫处理流。为什么需要处理流呢?这就跟水流里面有杂质,你要过滤它,你可以再套一层管道过滤这些杂质一样。

3.1 节点流类型

红色区域,使用还是比较多的

节点流就是一根管道直接插到数据源上面,直接读数据源里面的数据,或者是直接往数据源里面写入数据。典型的节点流是文件流:

  • 字节流
    • 文件的字节输入流(FileInputStream)
    • 文件的字节输出流(FileOutputStream)
  • 字符流
    • 文件的字符输入流(FileReader)
    • 文件的字符输出流(FileWriter)。

使用频率还是比较高的,这些都是基石

3.2 处理流类型

红色部分还是比较重要的

处理流是包在别的流上面的流,相当于是包到别的管道上面的管道。

4.InputStream(输入流)

输入流关系图

凡是以InputStream结尾的管道,都是以字节的形式向我们的程序输入数据。

4.1.InputStream的基本方法

常用方法
  • read()方法是一个字节一个字节地往外读,每读取一个字节,就处理一个字节。
  • read(byte[] buffer)方法读取数据时,先把读取到的数据填满这个byte[]类型的数组buffer(buffer是内存里面的一块缓冲区),然后再处理数组里面的数据。
    这就跟我们取水一样,先用一个桶去接,等桶接满水后再处理桶里面的水。如果是每读取一个字节就处理一个字节,这样子读取也太累了。

5.OutputStream(输出流)

跟上面的一样

5.1 OutputStream的基本方法

输出流,红色部分

6.Reader流

字符流输入流

6.1.Reader的基本方法

内容为中文的常用

7.Writer流

关系图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • tags:io categories:总结 date: 2017-03-28 22:49:50 不仅仅在JAVA领...
    行径行阅读 2,210评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,287评论 25 708
  • # Java 流式输入 输出原理 # Java 流的分类 # 输入 输出 流 类 # 常见的节点流 和 处理流 #...
    时待吾阅读 332评论 0 0
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,149评论 6 13
  • 作为日本东京附近最大的国际机场,坐落于东京的东边海岸上。传言成田国际机场是日本用垃圾废物填充出来的。有一点精卫填海...
    我爱你女王阅读 569评论 1 2