字符流和字节流

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

你可能感兴趣的:(字符流和字节流)