一、流的概念
流是字节序列的抽象概念。流和文件的差别:文件是数据的静态存储形式,而流是指数据传输时的形态。文件只是流的操作对象之一。流按其操作的对象不同可以分为文件流、网络流、内存流、磁带流等。Java流类可分为两个大类:节点流类和过滤流类(也叫处理流类)
1、节点流类:用于直接操作目标设备所对应的流类。节点流类所对应的IO源或目标称为流节点。比如我们用一个类和一个文件或网络相关联,那么这个类就叫做节点流类,这个文件或网络就叫做流的节点。
二、InputStream和OutputStream类
1、InputStream类:程序可以从中连续读取字节的对象叫输入流,在Java中,用InputStream类来描述所有输入流的抽象概念。这个类是抽象类。
2、OutputStream类:程序可以向其连续写入字节的对象叫输出流,在Java中,用OutputStream类来描述所有输出流的抽象概念。这个类也是抽象类。
三、FileInputStream和FileOutputStream类
1、这两个类分别用来创建磁盘文件的输入流和输出流对象,通过他们的构造函数来指定文件路径和文件名。
2、有两种方法创建FileInputStream
(1)、FileInputStream inFirst = new FileInputStream("test.txt");
(2)、File f = new File("test.txt");
FileInputStream inSecond = new FileInputStream(f);
四、Reader和Writer类
1、上面的几个类,他们在读取或写入的时候,都是进行字节操作,要显示出来还要进行字符串转换。
2、用Reader和Writer类就可以直接进行字符串读取,简化了字符串的输入输出编程。但他们都是抽象类,用他们的子类FileReader、FileWriter就可以直接使用。
五、PipedInputStream和PipedOutputStream类
PipedInputStream和PipedOutputStream类用于在应用程序中创建管道通信。一般用在进程间通信。
六、PipedWriter和PipedReader类
这两个类用于在管道中的字符串通信。
七、ByteArrayInputStream和ByteArrayOutputStream类
ByteArrayInputStream和ByteArrayOutputStream,用于以IO流的方式来完成对字节数组内容的读写,来支持类似内存虚拟文件或者内存映像文件的功能。