Java中I/O操作主要是指使用Java进行输入、输出操作。
Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
数据流是一串连续不断的数据的集合,就像水管里的水流,在水管的一端一点一点的供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段的向数据流管道中写入数据,这些数据会按照先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但是只能先读取前面的数据后,在读取后面的数据,不能随机读取。不论写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
简而言之:数据流是一组有序的,有起点和终点的字节数据序列,包括输入流和输出流。
当程序需要读取数据的时候,就会建立一个通向数据源的连接,这个数据源可以是文件、内存、网络连接等。类似的,当程序需要写入数据的时候,就会建立一个通向目的地的连接。
数据流的分类
数据流序列中的数据既可以是未经加工的原始二进制数据,也可以是经过一定编码处理后符合某种格式规则的特定数据。因此,Java中的数据流分为两种:
1. 字节流 数据流中最小的数据单元是字节
2. 字符流 数据流中最小的数据单元是字符
Java 中的字符是Unicode编码的,一个字符占用两个字节。
概览
Java.io 包几乎包含了所有操作输入、输出重要的类。所有这些流类代表了输入源和输出目标。
Java.io 中最重要的就是5个类和1个接口。
5个类:
1. File:文件特征与管理,用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
2. OutputStream:抽象类,字节流,二进制格式操作,基于字节的输入操作。是所有输入流的父类,定义了所有输入流都具有的共同特征。
3. InputStream:抽象类,字节流,二进制格式操作,基于字节的输出操作。是所有输出流的父类,定义了所有输出流都具有的共同特征。
4. Writer:抽象类,字符流,文本文本格式操作,基于字符的输出操作。
5. Reader:抽象类,字符流,文本格式操作,基于字符的输入操作操作。
6. RandomAccessFile:随机文件操作,可以从文件的任意位置进行存取操作。
1个接口:
1. Serializable
Java I/O 主要包括如下3个层次
1. 流式部分,最主要的部分,如 InputStream, OutputStream, Reader, Writer 等
2. 非流式部分, 如 File, RandomAccessFile, FileDescriptor 等
3. 其他文件读取部分的与安全相关的类,以及与本地操作系统相关的文件系统的类。
按照来源/去向分类
1. File(文件):FileInputStream, FileOutputStream, FileReader, FileWriter
2. byte []:ByteArrayInputStream, ByteArrayOutputStream
3. Char []:CharArrayReader, CharArrayWriter
4. String:StringBufferInputStream, StringReader, StringWriter
5. 网络数据流:InputStream, OutputStream, Reader, Writer
参考:
http://www.importnew.com/23708.html