流即数据的流向,即数据的输入/输入方向。可以是文件,内存,硬盘的其他的设备。
Java流分为三类:
1.按照处理数据大小:字节流和字符流
2.按照流的方向:输入流和输出流
3.按照功能分为:分为节点流和处理流
字节流和字符流:
1)字节流:读取的数据以字节为单位(byte),8bit,我们要与InputStream,OutputStream(抽象类)相关联。
当我们读取文件然后在写入到其它的文件时候,不用过多的关注读取的内容时,通常使用的是字节流,因为这相当于是在处理二进制文件。读取数据效率高,并且保持数据的完整性。
2)字符流:读取的数据以字符为单位(char),16bit,我们要与InputReader,OutputReader(抽象类)相关联。
当我们读取文件的内容,并要对文件的内容进行加工时(修改,判断等),通常是使用的字符流,因为我们读取的其实是按照一个字符。
读取的,文件的最基本单位是字符,同样保持数据的完整性。
输入流和输出流:
1)输入流:是指从流读入数据。
2)输出流:是指向流写出数据。
节点流:即从特定的数据源读取写入数据(FileReader,PrintWriter)。
处理流:在已经存在的节点流或者处理流上,进行装饰提供更强大的读写功能。
1)缓冲流(Buffered)顾名思义就是带缓冲区.如:在节点流之上进行加工,添加缓冲区(FileInputStream=>BufferedInputStream)这样避免读取文件时候,大量进行对硬盘的读写,而是从缓冲区进行读写,提高读写效率。
2)转换流(StreamReader)即字节流与字符流的相互转换。比如:在进行读写字节流设备时候,我想调用读取字符流的函数,就可以通过转换流。将(字节流=>字符流) InputStreamReader in=new InputStreamReader(new InputStream())
3) 数据流(Data) 当读取写入具体的数值数据时候(Long Double)就可以采用DataInputStream和DataOutputStream流进行功能更加强大的写入和读取功能。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |