什么是 IO流?
- 存储和读取数据的解决方案
I: input
O: output
流:像水流一样传输数据
IO流的作用?
- 用于读写数据(本地文件,网络)
IO流为啥要分字节流和字符流?
- Java I/O流的设计中区分字节流和字符流是为了提供更精细的数据处理方式,它们各自有不同的用途和特点:
- 字节流(处理一切)主要用于处理原始二进制数据。它适用于处理所有类型的数据,如图像、视频、音频和序列化对象等,这些数据类型不仅仅限于文本。
- 字符流:(只能处理纯文本)。它可以自动处理文本的编码和解码,使得读写文本数据更加方便和高效。当处理字符数据时,字符流可以直接读写字符,而不是字节。
为什么要有字符流?
- Java中字符是采用Unicode标准,Unicode 编码中,一个英文字母或一个中文汉字为两个字节。在UTF-8编码中,一个中文字符是3个字节。如果使用字节流处理中文,如果一次读写一个字符对应的字节数就不会有问题,一旦将一个字符对应的字节分裂开来,就会出现乱码了。为了更方便地处理中文这些字符,Java就推出了字符流。
IO流的字节流能处理文本吗?
- 可以。
https://blog.csdn.net/mu_wind/article/details/108674284?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171196084416800213079851%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171196084416800213079851&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-108674284-null-null.142v100pc_search_result_base8&utm_term=io%E6%B5%81&spm=1018.2226.3001.4187
IO流从 传输方式 分类
字符是给人看的,字节是给计算机看的。
- 字节流
- 字符流
字节流和字符流的区别
- 字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码中文汉字是 3 个字节,GBK编码中文汉字是 2 个字节。)
- 字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。
IO流从 数据操作 分类
- 从数据来源或者说是操作对象角度看,IO 类可以分为:
Java I/O 使用了装饰者模式来实现。