1.按流的方向分为:输入流和输出流
2.按流的数据单位不同分为:字节流和字符流
3.按流的功能不同分为:节点流和处理流(过滤流)
节点流:可以从或向一个特定的地方(节点)读写数据。
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
输入流和输出流主要区分的关键字就是Input 和Output 还有Reader和Writer
字节和字符主要区分的关键字是有没有stream,有stream的是字节流,可以传输任何数据,而字节流只能传输文本内容
常用的节点流
父 类 :InputStream OutputStream Reader Writer
文 件 :FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流
数 组 :ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
字符串 :StringReader StringWriter 对字符串进行处理的节点流
管 道 :PipedInputStream PipedOutputStream PipedReader PipedWriter 对管道进行处理的节点流
1.从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
2.可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
3.通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。