一、Java中IO流的分类
要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,即为IO流。
Java流有着另一个重要的用途,那就是利用对象流对对象进行序列化。在一个程序运行的时候,其中的变量数据是保存在内存中的,一旦程序结束这些数据将不会被保存,一种解决的办法是将数据写入文件,而Java中提供了一种机制,它可以将程序中的对象写入文件,之后再从文件中把对象读出来重新建立。这就是所谓的对象序列化。Java中引入它主要是为了RMI(Remote Method Invocation)和Java Bean所用,不过在平时应用中,它也是很有用的一种技术。
流的分类:
1、按照流的流向分,可以分为输入流和输出流。
2、按照流的角色划分,可以分为节点流和处理流。
3、按照操作单元划分,可以分为字节流和字符流。
- 字节流: 以字节为单位输入输出数据,字节流按照8位传输。
- 字符流: 以字符为单位输入输出数据,字符流按照16位传输。
二、Java中IO流的实现
Java IO流共涉及 40 多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。
- InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。
- OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。
常用的IO类包括:
1、File
2、FileInputSteam,FileOutputStream
3、BufferInputStream,BufferedOutputSream
4、PrintWrite
5、FileReader,FileWriter
6、BufferReader,BufferedWriter
7、ObjectInputStream,ObjectOutputSream