字符流
在Java语言中,字符都是以16位Unicode码的形式表示的。处理Unicode码的所有类都是从Reader和Writer两个抽象超类中衍生的。对一个带有分隔符的Unicode文件的读写流程如图
字符输入流
字符输入流均为Reader的子类,java.io的字符输入流类
1.Reader:方法包括read();skip();markSupported();mark();reset()
2.InputStreamReader:
方法:
getEncoding();InputStreamReader()和close()
3.BufferedReader:
方法包括:
readLine();BufferedReader()
字符输出流
字符输出流均为Writer的子类
Writer
方法:
write();flush();
OutputStreamWriter
方法:close()
BufferedWriter
方法包括newLine()
类名中有buffer的类在处理I/O时大多具有缓冲功能,可以提高I/O的传输效率,输出流和输入流常成对出现。
过滤流
FilterInputStream和FilterOutputStream抽象类及其子类是过滤流类,它们保证某I/O流只能同时被一个线程访问,从而为java对I/O流的同步处理机制提供保障。使用过滤流时先把过滤流链接到某个I/O流上,再通过构造方法的参数去指定连接的I/O流
1.BufferedInputStream
父类:FilterInputStream
功能:缓冲读取数据,提高读取性能
方法:mark()、reset()、skip()
2.BufferedOutputStream
父类:FilterOutputStream
功能:缓存写入数据,提高写入效率
方法:filsh();强制把缓冲区内容写入输出流
3.DataInputStream、DataOutputStream
功能:能够以java内购的boolean、int、float等数据类型形式读/写数据流
4.LineNumberInputStream
过滤类,可以计算行数,支持换行、回车的处理
5.PushbackInputStream
可在编译时为语法分析提供帮助
6.PrintStream
适用于标准输出
管道流
一个程序、线程或代码段的输出是另一个程序、线程或代码段的输入,这就是管道。它的输出流称为发送方,输入流称为发送方
java.io中提供了PipedInputStream和PipedOutputStream类作为管道的I/O构件
1.PipedInputStream
管道输入流类
方法
PipedInputStream(PipedOutputStream src);
public void connect(PipedOutputStream src);
2.PipedOutputStream
管道输出流类
方法
PipedOutputStream(PipedInputStream snk);
public void connect(PipedInputStream snk);
管道输入流和管道输出流一般都成对出现
压缩文件流
java中的压缩文件归属java.util.zip和java.util.jar包,压缩流程如图所示
J2SE的扩展I/O功能
1.扩展I/O功能
内存映射技术
文件锁定
字符及编码
非阻塞I/O