Java基础系列文章—IO流简单介绍
Java基础系列文章—IO流简单介绍
文章目录
前言
因为流的内容很多,笔者将在后续系列文章再细化讲解。篇幅有限,本篇文章只是简单的对IO流做了一个简单介绍,后续文章会有针对性的对不同的流进行介绍
提示:以下是本篇文章正文内容,下面案例可供参考
一、Java中IO流是什么?
I/O输入/输出(Input/Output),用于处理设备之间的数据传输。
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在设备间传输称之为流。
下图是IO的整体介绍图
二、IO流的分类
1.按照读写的单位大小来分
1.1 字节流
Java中的字节流处理的最基本单位为单个字节,每次读入或读出是 8 位数据,它通常用来处理二进制(计算机识别的)数据。可以读任何类型数据,图片、文件、音乐视频等。
1.2 字符流
Java中的字节流处理的最基本单位为单个字符,只能用来处理纯文本(使用特殊编码的二进制文件)文件。
注:一个字符根据编码的不同,对应的字节数量也不同,如 UTF-8 编码是 3 个字节,GBK编码是 2 个字节。
1.3 字节流和字符流的区别
字节流与字符流主要的区别是他们的的处理方式,字符流处理的单元为2个字节的Unicode(一种编码格式)字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。
字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好。如果是音频文件、图片、歌曲,就用字节流好点,如果是纯文本的,用字符流好点. 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
1. 字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;
2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
3. 字节流采用的是ASCII编码,字符流采用Unicode编码,他们之间的转化要进行字符集的转化。
2.按照实际IO操作来分
2.1 输入流
从文件读入到内存,只能进行读操作
2.2 输出流
从内存读出到文件,只能进行写操作
3.按照读写时是否直接与硬盘、内存等节点连接来分
3.1 节点流
直接与数据源相连,读入或读出
3.2 处理流(包装流)
对一个已存在的流的连接进行封装,通过所封装的流的功能调用实现数据读写,如添加一个Buffering缓存区
注:主要作用是在读入或读出时,对数据进行缓存,以减少I/O次数,以便更好更快的读写文件
总结
以上内容就是简单的对流进行一个分类介绍,后续文章会在具体介绍,感谢各位大佬阅读本篇文章。
著作权归NoLongerConfused所有。商业转载请联系NoLongerConfused获得授权,非商业转载请注明出处。