黑马程序员_IO3_其他的IO流

-----------------------------------------------------------------android培训java培训、期待与您交流! ---------------------------------------------------------------  

IO其他流

打印流:该流提供了打印方法,可以将各种数据类型原样打印。

字节打印流

PrintStream :该流可以直接操作Flie

       构造函数可以接收的参数类型:

1.      File对象

2.      字符串路径

3.      字节输出流。OutputStream

PrintWriter :

       构造函数可以接收的参数类型:

1.      File对象

2.      字符串路径

3.      字节输出流。OutputStream

4.      字符输出流。Writer

PrintWriter(OutputStream out, boolean autoFlush)

当为true时,则 println、printf 或 format 方法将刷新输出缓冲区

 

序列流

SequenceInputStream

可以合并多个流

两个构造函数:

SequenceInputStream(Enumeration<? extends InputStreame)

SequenceInputStream(InputStream s1, InputStream s2)

需要传入Enumeration类

在集合Vector中的elements()方法会返回一个Enumeration对象

 

操作对象流

ObjectInputStream

ObjectOutputStream

       被操作的对象需要实现Serializable(标记接口)

       标记接口就是没有方法的接口

static静态数据可以不序列化

transient 修饰非静态数据可以不序列化

 

管道流(结合线程使用

PipedInputStream

PipedOutputStream

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

       不建议对这两个对象使用单线程,因为这样容易可能死锁线程

连接两个管道有两种方法:

第一种方法通过构造函数

PipedInputStream(PipedOutputStream src)

PipedOutputStream(PipedInputStream snk)

第二种方法通过connect方法连接

 

RandomAccessFile(只能操作文件

       该类不算是IO体系中的子类,直接继承自Object,但是他是IO包中的成员,其具备读写功能,内部封装了一个数组,通过指针对数组元素进行操作。

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针

该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

       通过skipBytes(intx),seek(int x)来达到随机访问

 

通过构造函数可以看出,该类只能操作文件,且需要制定模式mode

       mode模式:

"r"

以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException

"rw"

打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。

"rws"

打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。

"rwd"  

打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备

seek(int x) 调整对象指针

skipBytes(int x) 指针不能往回走访问

       且该对象的构造函数所操作的文件不存在,会自动创建,如果存在,则不会覆盖。

       如果模式为r,不会创建文件,所读文件不存在时会报异常

       如果模式为rw,操作文件不存在时,会自动创建,如果存在则不覆盖该文件

 

操作基本数据类型流

DataInputStream

DataOutputStream

除了基本读写基本数据类型的方法外还有特殊的方法

writeUTF()---用该方法写入的数据只能使用特定的readUTF()方法读取

 

操作字节数组

ByteArrayInputStream :在构造时,需要接收数据源,且该源是一个字节数组

ByteArrayOutputStream :在构造时,不用定义数据目的,缓冲区会随着数据自动增长

因为没有调用底层所以不需要关闭流,且不会产生任何IOException

特有方法:

writeTo() :将缓冲的数据,一次写入到其他流中---该方法需要处理异常

 

操作字符数组

CharArrayInputStream

CharArrayOutputStream

操作字符串数组

StringReader(已过时)

StringWriter

原理同ByteArrayInputStream和ByteArrayOutputStream

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值