IO类 操作对象 管道流 RandomAccessFile类

 


 

 

操作对象

ObjectInputStream与ObjectOutputStream

被操作的对象需要实现Serializable接口

IO类 操作对象 管道流 RandomAccessFile类
IO类 操作对象 管道流 RandomAccessFile类
 管道流
IO类 操作对象 管道流 RandomAccessFile类
 
IO类 操作对象 管道流 RandomAccessFile类
 

 

RandomAccessFile

该类不是算是IO体系中子类。
而是直接继承自Object。

但是它是IO包中成员。因为它具备读和写功能。
内部封装了一个数组,而且通过指针对数组的元素进行操作。
可以通过getFilePointer获取指针位置,
同时可以通过seek改变指针的位置。


其实完成读写的原理就是内部封装了字节输入流和输出流。

通过构造函数可以看出,该类只能操作文件。
而且操作文件还有模式:只读r,,读写rw等。

如果模式为只读 r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。
如果模式rw。操作的文件不存在,会自动创建。如果存在则不会覆盖。

seek()  调整对象的指针

skipBytes() 跳过指定的字节数
readInt()  读取Int类型四个字节

 

DataInputStream与DataOutputStream

可以用于操作基本数据类型的数据的流对象

构造函数

DataOutputStream dos = new DataOutputStream(OutputStream out);

 

对内存为源和目的的操作

ByteArrayInputStream   ByteArrayOutputStream  

用于操作字节数组的流对象。

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

ByteArrayOutputStream: 在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组。
这就是数据目的地。

因为这两个流对象都操作的数组,并没有使用系统资源。
所以,不用进行close关闭。


流操作规律:

源设备,
 键盘 System.in,硬盘 FileStream,内存 ArrayStream。
目的设备:
 控制台 System.out,硬盘FileStream,内存 ArrayStream。

IO类 操作对象 管道流 RandomAccessFile类
 
操作字符数组  CharArrayReader   CharArrayWriter
操作字符串   StringReader    StringWriter