A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄新灵 黑马帝   /  2011-10-10 15:08  /  2837 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。

回复 使用道具 举报
为什么RandomAccessFile类会同时有read()和write()方法

5 个回复

倒序浏览
本帖最后由 伍碧林 于 2011-10-10 15:43 编辑

文件存取通常是循序的,每在文件中存取一次,文件的读取位置就会相对于目前的位置前进一次。然而有时必须指定文件的某个区段进行读取或写入的动作,也就是进行随机存取(Random Access),即要能在文件中随意地移动读取位置。这时可以使用RandomAccessFile,使用它的seek()方法来指定文件存取的位置,指定的单位是字节。既然是进行读取或写入的动作.那么有read()和write()是很正常的啊.是不是我没有理解你的问题...
public int read() 从此文件中读取一个数据字节。
public void  write(byte[] b)  将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。其它write()方法略....
还有它实现了DataInput,和DataOutput接口哈.

                  
回复 使用道具 举报
该类不算是IO体系中的子类而是直接继承自Object,但是它是IO包中的成员,它具有读写功能,它完成读写的原理就是内部封装了字节输入流和字节输出流
回复 使用道具 举报
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。

回复 使用道具 举报
康健 黑马帝 2011-10-10 16:32:48
地板
RandomAccessFile用于支持对文件的随机存取.随机访问.文件就像访问一个存储在文件系统中的大量字节数组一样来进行操作。其内部封装了一个byte数组,存在一个文件指针的索引指向这个数组,并且其内部封装了字节的输入流和输出流。这个文件指针可以通过getFilePointer方法获取以及通过seek方法进行设置.该类实现了DataOutput和DataInput接口.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马