1.I/O 框架图
2.比特Bit、字节Byte、字符Char
- Bit 最小的二进制单位 ,是计算机的操作部分 取值 0 或者 1
- Byte 是计算机操作数据的最小单位由 8 位 bit 组成 取值(-128-127)
- Char 是用户的可读写的最小单位,在 Java 里面由 16 位 bit 组成 取值(0-65535)
3.java中流的种类
- 字符流和字节流。
所有的字节流都继承自 inputStream 和 OutputStream,
所有的字符流继承自 Reader 和 Writer。
- 节点流和处理流
节点流:直接与数据源相连,用于输入或者输出
处理流:在节点流的基础上对之进行加工,进行一些功能的扩展
4.字符流和字节流的区别
-
要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这个抽象描述方式起名为 IO 流,对应的抽象类为 OutputStream 和 InputStream ,不同的实现类就代表不同的输入和输出设备,它们都是针对字节进行操作的。
-
在应用中,经常要完全是字符的一段文本输出去或读进来,用字节流可以吗?
计算机中的一切最终都是二进制的字节形式存在。对于 “中国” 这些字符,首先要得到其对应的字节,然后将字节写入到输出流。读取时,首先读到的是字节,可是我们要把它显示为字符,我们需要将字节转换成字符。由于这样的需求很广泛,人家专门提供了字符流的包装类。 -
底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写入底层设备,这为我们向 IO 设别写入或读取字符串提供了一点点方便。
5.常用流的应用场景
-
对字节流进行大量的从硬盘读取
使用BufferedInputStream
使用缓冲流能够减少对硬盘的损伤 -
打印出不同类型的数据到数据源
Printwriter 可以打印各种数据类型
也就是常用的System.out.println() -
把我们控制台的输出改成输出到一个文件里面
SetOut(printWriter,printStream)重定向 -
基本类型数据和字符串按顺序输出和输入
使用 DataInputStream DataOutputStream -
将字节流转换为字符流
InputStreamReader 类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。