在 Java 中,把所有的输入和输出都当做流来处理。 “ 流 ” 是一个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。 “ 流 ” 屏蔽了实际的输入 / 输出设备中处理数据的细节。一个程序可以打开一个数据源上的流,然后按顺序读取这个流中的数据到程序中,这样的流称为输入流,一个程序也可以打开一个目的地的流,然后按顺序的把程序中的数据写入到这个目地中,这样的流称为输出流。
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
流的分类:
1.Java 的输入 / 输出流中,根据它们的数据类型,主要可分为两类:字符流 (Character Stream) 和字节流 (Btye Stream) 。
字符流 (character Stream) 字符流的输入 / 输出数据是字符码。
字符流有两个基本类: Reader 类和 Writer 类。 Reader 类用于处理字符输入流, Writer 类用于处理字符输出流。 它们都是抽象类,本身不能直接用来创建对象。提供了一些方法。
字节流 (Btye Stream) 字节流是按字节读 / 写二进制数据。
字节流有两个基本的类: InputStream 类和 OutputStream 类。 InputStream类用于处理字节输入流, OutputStream 类用于处理字节输出流。它们都是抽象类,本身不能直接用来创建对象。InputStream 类和 OutputStream 类为其它字节输入 / 输出流子类提供了一些基本方法和标准接口。
2.按照流是否直接与特定的地方(如磁盘、内存等)相连,分为节点流与处理流。
节点流:可以从或者向一个特定的地方(节点)读写数据。如文件流 FileReader 。
处理流:是对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据读、写功能。处理流也称过滤流,如缓冲处理流BufferedReader 。
字节流与字符流的差异:
1、字节流在操作的时候本身是不会用到缓冲区的,是