数据在各个设备之间的传输,是通过流的方式完成的
按照流动方向:输入流、输出流(内存中数据的流动)
按照处理数据单位不同:字节流(InputStreeam,OutputStream)、字符流(Reader,Writer)
程序中的输入和输出都是以流的形式保存的,流中保存的实际上全是字节文件。
所有文件的存储都是字节(byte)来存储,在磁盘上保留的并不是文件的字符,而是先把字符编码成字节,再存储这些字节到硬盘上,在读取时也是一个一个的读取以形成序列
1>字节流:数据流中最小的数据单元是字节。
2>字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
按照功能不同:节点流,处理流
节点流:可以从某节点读数据或向某节点写数据的流
处理流:对已存在的流的连接和封装,实现更为丰富的流数据处理,提高流读写效率
1>程序用于直接操作目标设备所对应的类叫节点流。
2>程序通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是处理流。
节点流:可以从某节点读数据或向某节点写数据的流
处理流:对已存在的流的连接和封装,实现更为丰富的流数据处理,提高流读写效率
(1)对I/O进行缓冲是一种常见的性能优化,缓冲流为I/O流增加了内存缓冲区,增加缓冲区的两个目的:
1>允许Java的I/O一次不只操作一个字符,这样提高䇖整个系统的性能;
2>由于有缓冲区,使得在流上执行 skip、mark 和 reset 方法都成为可能。
(2)缓冲流:它是要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。例如:BufferedReader中的readLine方法,BufferedWriter中的newLine方法