其他常用IO流
l 打印流
Ÿ PrintStream和PrintWriter
可以用于直接操作文件或输入流
l 序列流
Ÿ SequenceInputStream
可以同时操作多个输入流
l 对象流
Ÿ ObjectInputStream和ObjectOutputStream
被操作的对象需要实现Serializable(标记接口)
Ÿ Serializable接口
实现Serializable接口的类表示已被序列化,并且会加入一个序列版本号(serialVersionUID),如果发送者的类和接受者的类版本号不同,则会抛出InvalidClassException。
如果可序列化类未显式声明 serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认 serialVersionUID 值,强烈建议所有可序列化类都显式声明serialVersionUID值。
PS:对象流不能保存瞬态和静态字段的值,如果字段是非静态的,又不想被序列化保存,那么这个字段就可以用transient来修饰(表示瞬态字段)。
l 随机流
Ÿ RandomAccessFile
ü 直接继承自Object类,不是IO体系中的子类,但是属于io包。
ü 此类支持对随机访问文件的读取和写入。(既能读又能写)
ü 如果文件不存在,则创建,如果存在,则不创建(不覆盖)
ü 此类中存储着一个大型byte数组,并且可以通过指针来操作数组中的元素
ü 可以通过getFilePointer方法获取当前指针位置,并通过seek方法设置
ü 该类的对象只能操作文件
ü 构造方法的第二个参数mode:指定访问模式
mode参数指定用以打开文件的访问模式。允许的值及其含义为:
值 含义
r 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
rw 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
rws 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
rwd 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。
PS:mode参数只能接收以上四个值,否则会抛出IlleaglArgumentException
Ÿ 写入数据
Ÿ 读取数据
Ÿ 随机读取数据(读取指定位置上的元素)
Ÿ 随机写入数据(在指定位置写入数据)
l 管道流
Ÿ PipedInputStream和PipedOutputStream
ü 输入输出可以直接进行连接,通过结合线程使用。
ü 如果用于单线程,可能会造成死锁线程。
ü 关联PipedInputStream和PipedOutputStream有两种方式
1) 创建输入流对象时传入输出流对象
PipedInputStream(PipedOutputStream src)
2)
调用PipedInputStream中的connect(PipeOutputStream src)方法
l 数据流
Ÿ DataInputStream和DataOutputStream
用于操作基本数据类型的流
l 数组流
不需要关闭(关闭无效),流中的方法在关闭后仍可使用。
数据源是一个数组。
Ÿ ByteArrayInputStream和ByteArrayOutputStream
用于操作字节数组的流
Ÿ CharArrayReadrer和CharArrayWrite
用于操作字符数组的流
l 字符串流
不需要关闭(关闭无效),流中的方法在关闭后仍可使用。
数据源是一个字符串。
Ÿ StringReader和StringWriter
用于操作字符串的流
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言JAVA频道!