java随机流_JAVA语言-IO流(扩展)序列流、对象流、随机流、管道流

其他常用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

Ÿ 写入数据

f99e95c40c085a6dbdbe8cfc418c307d.png

Ÿ 读取数据

3240af8296fd115f62b8452c72d11bf4.png

Ÿ 随机读取数据(读取指定位置上的元素)

5dac5aeb215a832f1b483454feeaac64.png

Ÿ 随机写入数据(在指定位置写入数据)

3f6cdd21af9475f9ceff524924e5bab4.png

l 管道流

Ÿ PipedInputStream和PipedOutputStream

ü 输入输出可以直接进行连接,通过结合线程使用。

ü 如果用于单线程,可能会造成死锁线程。

ü 关联PipedInputStream和PipedOutputStream有两种方式

1) 创建输入流对象时传入输出流对象

PipedInputStream(PipedOutputStream src)

2)

调用PipedInputStream中的connect(PipeOutputStream src)方法

aa087a602015dcf4533927d8277557f2.png

e67ef899c237c3776d1bd3407f2b157c.png

3763d80b92c12d71d64b97d66f0abbd3.png

l 数据流

Ÿ DataInputStream和DataOutputStream

用于操作基本数据类型的流

l 数组流

不需要关闭(关闭无效),流中的方法在关闭后仍可使用。

数据源是一个数组。

Ÿ ByteArrayInputStream和ByteArrayOutputStream

用于操作字节数组的流

Ÿ CharArrayReadrer和CharArrayWrite

用于操作字符数组的流

l 字符串流

不需要关闭(关闭无效),流中的方法在关闭后仍可使用。

数据源是一个字符串。

Ÿ StringReader和StringWriter

用于操作字符串的流

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言JAVA频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值