https://blog.csdn.net/axi295309066/article/details/52820203
https://www.zhihu.com/question/39262026
https://blog.csdn.net/kunfd/article/details/52463672
https://www.cnblogs.com/absfree/p/5415092.html
1.流的概念
流(Stream)的概念源于Unix中管道(pipe)的概念.在Unix中,管道是一条不间断的字节流,用以实现程序或者进程间的通信,或读写外围设备,外部文件等。
流必定有源端和目的端,有流向。根据流向可将流分为两类:输入流和输出流。用户可以从输入流中读取信息,但是不能写入;相反对于输出流,只能输入写入,而不能读取。
2.IO流的概述
键盘的输入数据,显示器中的展示运行结果等等,都是社保之间的数据传输。在Java中将这种通过不同输入输出设备(键盘,显示器,内存等等)之间的数据传输抽象的称之为"流"。程序允许数据以流的方式在输入设备和输出设备之间进行数据传输。Java中的流都位于Java.io包下,称之为IO(输入输出)流。IO流既InputOutput的缩写。
将外设中的数据读取到内存中称之为输入;将内存中的数据写入外设中称之为输出。
IO流的特点:
IO流用来处理设备之间的数据传输;
Java对数据的操作是通过流的方式;
Java用于操作流的对象都在IO包下;
流按照操作数据分为两类:字节流和字符流
流按照流向分为:输入流和输出流
流只能操作数据,而不能操作文件
3.流的三种分类方式
按照流向:输入流和输出流
按照数据单位:字节流和字符流
按照流的功能:字节流和处理流
4. 字符流和字节流的大小
“字符(Byte)"和"字节(Character)”的大小:
1 byte = 8 bit
1 char = 2 byte = 16 bit (Java默认UTF-16编码)
1bit是数据中最小的单位,但是1bit所含有的信息量太少了,要表示一个有用的信息,需要好几bit来表示。因此除了硬件层面存在1bit比特位的寄存器之外,大多数情况下,字节是数据最小的基本单位。我们所熟知的8bit就是一个字节
boolean : 1 byte
char : 2 byte
short: 2 byte
int: 4 byte
float : 4 byte
long : 8 byte
double : 8 byte
5流的层次结构
IO流的常用基类:
字节流的抽象基类:InputStream和OutputStream
字符流的抽象基类:Reader和Writer
这四个基类派生出的子类都是以父类为后缀,以前缀为其功能;如InputStream的子类FileInputStream,Reader的子类FileReader。
字符流的由来:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。在对这个文字进行操作
既: 字符流 = 字节流+编码表
区别
字节流就是普通的二进制数据流,读出来的是bit
字符流在在字节流的基础上按照字符编码处理,处理的是char
网友评论