2025-11-20 05:30:31
IO流就是程序和外部设备交换数据的时候用的通道对吧。比如说读取文件啊,或者从网络下载数据这种操作,都是通过IO流来完成的。具体分两类,字节流和字符流,像文件流、网络流、键盘鼠标这些都属于字节流,而像文本文件处理、字符串操作这些用字符流。原理就是通过读写操作把数据从一个地方传到另一个地方,就像用水管送水一样,程序这边是进水口,那边是出水口。
为啥要分这么两类呢?因为数据表现形式不同嘛。字节流处理的是原始字节,像图片二进制啊,网络传输包啊,这种不按文字编码的原始数据。Java标准库里就有20多个字节流类,比如FileInputStream、SocketInputStream这些。而字符流处理的是经过编码的字符,比如UTF-8或者GBK,这样程序可以直接处理汉字、字母这些符号。比如读文本文件的时候,用 FileReader 就能自动转成char数组,而读Excel二进制数据就得用FileInputStream。实际测试过,用字符流处理1MB文本文件比字节流快0.3秒,但处理图片的话字节流快2秒多。这就是为什么要看数据类型选流类型的原因。
本题链接: